无聊时总结总结算法之02排序(直接插入+希尔)
来源:互联网 发布:大数据案例 编辑:程序博客网 时间:2024/06/05 12:42
排序(思想最重要)
(1)直接插入排序
插入排序的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置直到全部记录插入完成为止。 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。 效率: 时间复杂度:O(n^2). 其他的插入排序有**二分插入排序**,**2-路插入排序**。
- 算法实现:
2.one:
//插入排序—直接插入排序//onevoid InsertSort(int* a){ for(int i=0; i<NUM; i++)//该插第几个元素 { for(int j=0;j<i;j++)//在前面的有序列中找位置 { if(a[i]<a[j]) { int temp = a[i];//复制哨兵 for(int k=i; k>=j; k--) { a[k] = a[k-1]; //后移 } a[j] = temp; //插入哨兵 元素 } } }}
- two: 我看网上还有好多代码,但是思想最重要!!!!!!!!!
(2)希尔排序
希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫 缩小增量排序
基本思想:
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
!!!!!!!!!!!网友的例子感觉很好 :可以看看
one way!!
//希尔排序void ShellSort(int* a,int len){ int gap;//zu for(gap=len/2;gap>0;gap /=2) {/*// /////////////////////////////错的?????? 我晕了??// /////////////////////////////(问题在于两两相比较不完全,如例子的第二次gap = 5 / 2 = 2// //////////////////////////////排序后// 13 27 49 55 4 49 38 65 97 26// 1A 1B 1C 1D 1E// 2A 2B 2C 2D 2E)// ////////////////////////////1A 1B 比较,1B 1C 比较 但是1A和1C却没有比较!!!!// /////////////////////////////请诸位自己调试一下!!!!!!!!!!!!!!这很重要!!!! for(int i=0; i<gap; i++) { //因为要有很多组 for(int j=gap+i;j<len;j += gap) { if(a[j]<a[j-gap]) { int temp =a[j]; a[j] = a[j-gap]; a[j-gap] = temp; } } }*/// ///////////////////////////////对的 可以全都相比较!!!! for(int i=gap; i<len; i++) { //因为要有很多组 for(int j=i-gap;j>=0;j -= gap) { if(a[j]>a[j+gap]) { int temp =a[j]; a[j] = a[j+gap]; a[j+gap] = temp; } } } }}
今天先到这里(头大!)明天补!
1 0
- 无聊时总结总结算法之02排序(直接插入+希尔)
- 无聊时总结总结算法之02排序(希尔 完结)
- Java排序算法总结之(一)——插入排序(直接插入排序、折半插入排序、希尔排序)
- 排序算法总结之直接插入排序
- 直接插入 选择 快速 希尔排序 总结
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 排序算法总结(冒泡排序、直接插入排序、希尔排序)(python实现)
- 插入排序算法之直接插入排序和希尔排序
- 排序算法总结(一)---- 直接插入排序,希尔排序(java实现)
- 无聊时总结总结算法之03简单选择排序
- 无聊时总结总结算法之04冒泡排序
- 无聊时总结总结算法之05快速排序
- 无聊时总结总结算法之06归并排序
- 无聊时总结总结算法之07堆排序
- 无聊时总结总结算法之08桶排序
- 排序算法之直接插入排序和希尔排序
- 排序算法之直接插入排序与希尔排序
- ScrollBottom计算方法
- 2016年最值得关注的5大营销思维变革
- return View
- hadoop3---DistCp 并行文件复制
- 改变app的语言
- 无聊时总结总结算法之02排序(直接插入+希尔)
- Java cookie和session介绍与区别
- Install OpenCV 3.0 and Python 2.7+ on OSX
- 图表引擎 - AChartEngine
- jquery使页面返回到顶部代码
- 地图引擎 - OSMDroid
- RxJava在Android中的简单用例
- 现代JVM内存管理方法及GC的实现和主要思路
- Mac os X下使用Nginx跟PHP的连接问题