《常用排序法C语言编程》由会员分享,可在线阅读,更多相关《常用排序法C语言编程(4页珍藏版)》请在金锄头文库上搜索。
1、冒泡法排序基本思想:冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过
2、程,直至最终完成排序。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。C语言程序示例:void bubble_sort(int array,int n) int i,j,flag,temp; for(i = 0; i n-1; i+) flag = 1; for(j = 0; j arrayj+1) temp = arrayj; arrayj = arrayj+1; arrayj+1 = temp; flag = 0; if(1 = flag) break; printf(%d ,i); return; 插入法排序基本思想:将n个元素的数列分为已有序和无序两个
3、部分,如下所示: ,a2,a3,a4,,an a1(1),a2(1),a3(1),a4(1) ,an(1) a1(n-1),a2(n-1) ,, an(n-1) 每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。插入排序算法步骤:1.从有序数列和无序数列a2,a3,an开始进行排序; 2.处理第i个元素时(i=2,3,n) , 数列a1,a2,ai-1是已有序的,而数列ai,ai+1,an是无序的。用ai与ai-1,a i-2,a1进行比较,找出合适的位置将ai插入; 3.重复第二步,共进行n-1次插入处理,数列全部有序。
4、 程序示例:void insertSort(Type* arr,long len)/*InsertSort algorithm*/ long i=0,j=0;/*iterator value*/ Type tmpData; assertF(arr!=NULL,In InsertSort sort,arr is NULLn); for(i=1;i 0 & tmpData arrj-1) arrj=arrj-1; j-; arrj=tmpData; 比较好的C语言实例:void insertion_sort(int arrayn) int i,j; int temp; for (i = 1; i=0) & (arrayj temp) arrayj+1 = arrayj; j-; arrayj+1 = temp;