C语言排序的几种算法

C语言排序方法有三种, 一是冒泡排序法 通过双循环不断的比较,交换位置,将需要排序的元素一点一点向两侧移动,逐渐达到排序的目的 代码如下: for (j = 0; j < n-1; j++) { for (i = 0; i < n- j-1; i++) if (a[i] > a[i + 1])//比较 { t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;//换位 } } 冒泡排序很简单也很稳定,但是由于每一轮都要遍历一遍所有的元素,效率就不是很高 二是选择排序法 每一次从需要排序的元素的找出最大或最小的元素,存储在最右侧或最左侧,再从剩余元素中继续寻找,继续存储,直至排序完成 代码如下: for (i=0;i<n-1;i++) { k=i;//假设下标为k时,元素最大或最小 for (j=i+1;j<=n;j++) { if(a[j]>a[k]) k=j; } if(k!=i) { t = a[k]; a[k] = a[j]; a[j] = t;//换位 } } 选择排序不稳定,但是效率与冒泡排序相比,有明显提高 三是插入排序法 插入排序的基本思想是:将数组的第一个数认为是有序数组,把其余数根据大小插入到数组中,直至数组排列完成 代码如下: for(int i= 1; i<n; i++){ if(a[i] < a[i-1]) { int j= i-1; int x = a[i]; while(j>-1 && x < a[j]) { //数组元素后移 a[j+1] = a[j]; j--; } a[j+1] = x; //完成插入 } 插入排序很稳定,但是不适合排序数组元素过多的情况

经验分享 程序员 微信小程序 职场和发展