直接插入排序
来源:互联网 发布:淘宝代销编辑宝贝品牌 编辑:程序博客网 时间:2024/06/15 23:18
直接插入排序是在本数组中,从第二个元素开始,将其与第一个元素进行比较,如果比第一个元素大的话,不动进行第三个元素的排序,如果比第一个元素小就将第一个元素后移一位,将第二个元素插入到第一,然后进行第三个元素的比较......
//若当前数目比前面元素小的话,先通过循化来找到这个数字应该在此次循环中所排的位置,然后再通过循环将元素依次进行后移,将该数插入到指定位置。
void directInsert2(int *arr, int lenth){if (arr == NULL) return;for(int i=1; i<lenth; ++i){int tmp = arr[i];int j=i-1;for( ; j>-1; --j){if (arr[j]<tmp) break;}int num = i;while(num > j+1){arr[num] = arr[num-1];num--;}arr[num] = tmp;}}
//用当前元素与前面元素进行比较,如果比前面元素小的话,就与之交换数值,然后再判断其与当前位置的前一位的大小,如果小的话进行交换,直至找到比前面位置数值小的位置停止比较...
void insert_dirc1(int *arr, int len)//比较一次移动一次{for(int i=1; i<len; i++){int num = i;while(num>0){if (arr[num] < arr[num-1]){swap(&arr[num], &arr[num-1]);}else{break;}num--;}}}
插入排序适合基本有序的数组的排序,如果数组中的数值基本有序,则数值需交换次数很少。但是如果按从大到小排序,而数组初值是从小到大,那该次排序的效率将达到最差,其移动的次数是:n, n-1,n-2,......3,2,1。其时间复杂度则将接近于O(N*N)。希尔排序就是将数组中的值均匀的分散,使其先达到基本有序,然后再对其整体进行插入排序。
0 0
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序:直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- Ubuntu 7z安装
- RelativeLayout中子控件的android:layout_centerVertical="true"失效问题分析
- Mysql的逻辑架构
- JavaScript数据类型
- 浙大PAT甲级1019. General Palindromic Number (20)
- 直接插入排序
- 绝对定位的参考点position:absolute;
- HDU 3572 Task Schedule
- 十四次总结
- C++ STL--stack/queue 的使用方法
- centos把http、mysql等加入开机启动
- Android 源码工程中自带的demo(示例程序)
- 谈谈你对MVC的理解
- close_on_exec详解