资源描述:
《数组排序的几种方法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、★数组排序的几种方法! 问题:数组排序(即按某种特定的顺序排列数据,如升序或降序)是最重要的计算应用之一,银行用帐号对所有的支票进行能够排序,并根据排序结果准备月底的财务报告,学校学生成绩管理系统用数组排序的方法将考试成绩从高到低进行排名,数组排序方法很多,有直接插入排序、冒泡排序、快速排序、直接选择排序,下面来详细介绍这四种基本的排序方法及其实现。1,直接插入排序:当数据表A中每个元素距其最终位置不远,数据表A按关键字值基本有序,可用此方法排序较快。2,冒泡排序法:将较小的值“上浮”到数组顶部,而较大值
2、“下沉”到数组底部,这种排序技术要比较好几趟,每一趟要比较连续的数组元素对,如果某对数值是按升序排序的(或者这两个值相等),那就保持原样,如果某对数组是按降序排列的,就要交换它们的值。3,快速排序法:快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。4,直接选择排序法:直接选择排序的作法是:第一趟扫描所有数据,选择其中
3、最小的一个与第一个数据互换;第二趟从第二个数据开始向后扫描,选择最小的与第二个数据互换;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。它比起冒泡排序有一个优点就是不用不断的交换。程序1:直接插入法实现对数组的排序!#include#includeintmain(){ voidInsertSort(int[],int); inta[7]={8,10,2,3,1,7,13}; inti; InsertSort(a,7)
4、; for(i=0;i<7;i++) printf("%4d",a[i]); getch();}voidInsertSort(inta[],intcount){ inti,j,temp; for(i=1;itemp&&j>=0) { a[j+1]=a[j
5、]; j--; } if(j!=(i-1)) a[j+1]=temp; }}程序2:冒泡法实现对数组的排序!#include#includeintmain(){ voidBubbleSort(int[]); inta[10]; inti,j,temp; printf("Inputtemintegernumbersfor
6、a[10]:"); for(i=0;i<10;i++) scanf("%d,",&a[i]); printf(""); BubbleSort(a); printf("Thesortedarrayis:"); for(j=0;j<10;j++) printf("%d,",a[j]); printf(""); getch();}voidBubbleS
7、ort(intarray[]){ inti,j,temp; for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(array[i]>array[i+1]) { temp=array[i]; array[i]=array[i+1]; array[i+1]=t
8、emp; }}程序3:快速排序法实现对数组的排序!#include#include#defineMax8intmain(){ voidQuickSort(inta[],intp,intr); inta[]={2,8,7,1,3,5,6,4}; QuickSort