求一个C语言冒泡排序法的简单程序
悬赏分:50 - 解决时间:2007-9-4 11:16
我不明白怎么写
随便给我个就行
谢谢了
提问者: redangel0002 - 助理 二级
最佳
答案
八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案
main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++)
scanf ("%d,",&a[i]);
for(j=0;j<=9;j++)
{ for (i=0;i<10-j;i++)
if (a[i]>a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
for(i=1;i<11;i++)
printf("%5d,",a[i] );
printf("\n");
}
--------------
冒泡算法
冒泡排序的算法
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
与改进
交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。
应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。
冒泡排序
1、排序方法
将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。
(1)初始
R[1..n]为无序区。
(2)第一趟扫描
从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key
=i;j--) //对当前无序区R[i..n]自下向上扫描
if(R[j+1].keya[j]) //改成(a[i] Array[j + 1] )
{
temp = Array[j];
Array[j] = Array[j + 1];
Array[j + 1] = temp;
}
}
/* Prints an integer Array line by line */
void PrintArray( int Array[], const int Size )
{
int i;
for( i = 0; i < Size; i++ )
printf("Array[%i] = %i\n", i, Array[i] );
1. 有 N 个人围成一圈参加游戏,游戏的规则是: 所有出场的编号都会满足一个条件,即:(编号+N)%M=0,这样子用一个数组就可以解决这个问题了
N个人的编号分别为1、2、……、N,以编号为‘1’的人开始报数,报到 M 时该人跳出圈子,下一人继续报数。按此要求依次输出所有跳出圈子人员的编号。
struct test{
int num;
int flag;
};
static int N =20;
static int M =30;
int main()
{
struct test test1[N+1];
int j=1,i=1,k=0,none=0,line=0;
memset(test1,0,sizeof(test1));
for(i=1;i <=N;i++)
{
test1[i].num=i;
test1[i].flag=1;
}
j=1;
i=0;
while(1)
{
none=0;
if(i++> =N)i=1;
if(test1[i].flag)
{
if(j++==M&&(j=1))
{
printf( "%d ",test1[i].num);
if(++line%10==0)printf( "\n ");
test1[i].flag=0;
for(k=1;k <=N;k++)
if(test1[k].flag){none=1;break;}
if(!none){printf( "\n ");return 0;}
}
}
}
}
这个是传统约瑟夫问题。。~我有类似的!~
#include
void main()
{
int s=0,n,k,i,ren=0,t,b;//REN来统计人数,
int r[101];
scanf("%d",&n); scanf("%d",&k);
for(i=1;i<=n;i++)r[i]=1;
i=1;
t=n;
b=k%t;//报的数太大时,可以用求模
while(renn) i=1;//超过了就重头来咯~~嘿嘿~~
}
}
2. 已知一维数组 A 共有25个元素,值为:A(I)=I,现将此一维数组存入二维数组 B(5,5),存放次序为:
A(1) A(2) A(5) A(10) A(17)
A(4) A(3) A(6) A(11) A(18)
A(9) A(8) A(7) A(12) A(19)
A(16) A(15) A(14) A(13) A(20)
A(25) A(24) A(23) A(22) A(21)
即:
B(1,1)=A(1) B(1,2)=A(2) B(1,3)=A(5) B(1,4)=A(10) B(1,5)=A(17)…
#define line 5
int main()
{
int a[line*line],b[line][line];
int i=0,j=0,k=0,m=0;
for(i=0;i =0;k--)
{
b[j][k]=a[m++];
}
}
for(i=0;i
main()
{
int a[100][100]={0},i,j,k,n;
printf( "程序最大能够输出99以内的魔方阵,但为了直观,请输入n阶魔方阵3~19(奇数):\n ");
for (;;)
{
scanf( "%d ",&n);
if (n%2==0)
continue;
else break;
}
a[0][n/2]=1;
for (k=2,i=0,j=n/2;k <=n*n;k++)
{
if (i==0&&j==n-1)
{
a[++i][j]=k;
k++;
}
if (i==0)
i=n-1;
else i=--i;
if (j==n-1)
j=0;
else j=++j;
if (a[i][j]!=0)
a[i=i+2][j=--j]=k;
else a[i][j]=k;
}
printf( "%d阶魔方阵为:\n ",n);
for (i=0;i
本文档为【C语言冒泡排序法的简单程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。