十大排序算法 | 您所在的位置:网站首页 › 数组排序c语言从大到小 › 十大排序算法 |
二分插入排序法
直接插入排序方法:直接插入排序法
比较着看可以加深印象 原理按由大到小来说 同直接插入排序一样,也是分有序序列和无序序列,将待排序的无序序列插入到有序序列当中。 二分插入是把待插入数值先和有序序列的中间数值进行比较,如果比中间值大,就在中间值的左侧在找中间值进行比较,如果比中间值小,就在中间值的右侧在找中间值进行比较,直到找到合适的位置插入到有序序列中。 C语言代码 #include #include #include //type为 0 时排序从小到大,为 1 时排序从大到小 void Insertion(int a[],int n,int type) { for ( int i = 1; i int mid = (left+right) / 2; //中间值 if(type == 0 ? (a[mid] > temp) : (a[mid] left = mid + 1; //把左侧边界加大,在中间值得右边进行寻找 } } for ( int j = i-1; j >= left; j--) //将left到i-1之间的数都往后移动一个位置 //注意如果要插入的数比前面排好序的数都大或者都小,则不会进入到该循环内,则此时将不会有数进行位置的移动 { a[j+1] = a[j]; } a[left] = temp; //将要插入的数值插入到合适位置 } } void main() { int a[10]; int i; //请输入十个整数 printf("请输入十个整数:\n"); for ( i = 0; i printf("%d \n",a[i]); } system("pause"); //为了防止控制台闪退用的 } 有说的不对的地方请各位大佬多多指教! |
CopyRight 2018-2019 实验室设备网 版权所有 |