数组应用--常用排序(课时2)
来源:互联网 发布:已上映的耽美网络剧 编辑:程序博客网 时间:2024/06/06 06:44
1.选择法排序(升序)
基本思想:
1)对有n个数的序列(存放在数组a(n)中),从中选出最小的数,与第1个数交换位置;
2)除第1 个数外,其余n-1个数中选最小的数,与第2个数交换位置;
3)依次类推,选择了n-1次后,这个数列已按升序排列。
程序代码如下:
void main()
{ int i,j,imin,s,a[10];
printf("/n input 10 numbers:/n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{ imin=i;
for(j=i+1;j<10;j++)
if(a[imin]>a[j]) imin=j;
if(i!=imin)
{s=a[i]; a[i]=a[imin]; a[imin]=s; }
printf("%d/n",a[i]);
}
}
2.冒泡法排序(升序)
基本思想:(将相邻两个数比较,小的调到前头)
1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;
2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数;
3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。
程序段如下
void main()
{ int a[10];
int i,j,t;
printf("input 10 numbers/n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("/n");
for(j=0;j<=8;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers:/n");
for(i=0;i<10;i++)
printf("%d/n",a[i]);
}
3.合并法排序(将两个有序数组A、B合并成另一个有序的数组C,升序)
基本思想:
1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组;
2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完;
3)将另一个数组剩余元素抄入C数组,合并排序完成。
程序段如下:
void main()
{ int a[10],b[10],c[20],i,ia,ib,ic;
printf("please input the first array:/n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
scanf("%d",&b[i]);
printf("/n");
ia=0;ib=0;ic=0;
while(ia<10&&ib<10)
{ if(a[ia]<b[ib])
{ c[ic]=a[ia];ia++;}
else
{ c[ic]=b[ib];ib++;}
ic++;
}
while(ia<=9)
{ c[ic]=a[ia];
ia++;ic++;
}
while(ib<=9)
{ c[ic]=b[ib];
b++;ic++;
}
for(i=0;i<20;i++)
printf("%d/n",c[i]);
}
- 数组应用--常用排序(课时2)
- 数组应用--查找(课时3)
- 提高第39课时,实践2,项目2-动态数组排序
- 课时24—课时30 | Java 数组对象的创建和应用
- Excel 数组特辑班--课时2
- JavaEE之第七课时(二维数组)
- Objective-C中数组对象排序的方法(OC中NSString的常用API的基础应用2)
- java排序(数组)常用排序总结
- Java基础学习应用_数组常用方法与排序(一)
- Java基础学习应用_数组常用方法与排序(二)
- 数组与集合的应用之常用集合的使用(用TreeSet生成不重复自动排序随机数组)
- 提高第21课时,实践3,有序数组中插入数据 (第2种方法)
- 常用数组排序算法
- 数组常用排序
- 数组常用的排序
- php 常用数组排序
- 常用数组排序算法
- c语言二维数组与指针(课时4)
- jQuery炫酷3d旋转木马特效插件
- PowerDesigner的安装及破解
- JavaScript中判断对象类型的种种方法
- 生产者和消费者 2例
- 【动态】CStatic显示图片
- 数组应用--常用排序(课时2)
- 数组应用--查找(课时3)
- 读写者问题
- UVA - 10795 A Different Task 汉诺塔
- 二叉树的计数
- CSS对话框特效 兼容性好
- Sicily 1077 Cash Machine && POJ 1276
- C语言--链表基本操作(课时5)
- 复制指定类型文件