插入排序(直接插入排序和希尔(shell)排序
来源:互联网 发布:js修改url参数 不刷新 编辑:程序博客网 时间:2024/05/19 19:55
插入排序的基本思想:每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完成为止。
1.直接插入排序
直接插入排序的主要操作是将当前无序区的第1个记录插入到有序区的适当位置上,从而生成新的有序区。
void Insert_Sort(int a[],int size){int i,j,temp;for (i=1;i<size;i++){temp = a[i];for (j=i-1;j>=0 && temp<a[j];j--){a[j+1] = a[j];//将关键字大于a[i]的记录后移}a[j+1]=temp;//将j+1处插入a[i];}}
直接插入排序是一个稳定的排序算法,该算法的平均时间复杂度为O(n^2).
2.希尔排序
希尔排序算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d,对每组中全部元素进行排序,然后用一个较小的增量对它进行再次分组,并对每个新组重新进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。因此,希尔排序实质上时一种分组插入方法。
void ShellSort(int a[],int size){int i,j,gep;int temp;gep = size/2;//增量置初值while (gep>0){for (i=gep;i<size;i++){temp = a[i];j = i-gep;while(j>=0 && temp<a[j])//对相隔gep位置的元素组进行排序{a[j+gep] = a[j];j = j-gep;}a[j+gep] = temp;}gep = gep/2;//减小增量}}希尔排序是一个不稳定的排序算法,该算法的平均时间复杂度为O(n^1.3).
0 0
- 插入排序(直接插入排序和希尔(shell)排序
- 面试利器(二)-------插入排序(直接插入排序和希尔排序(Shell排序))
- 算法-排序-插入排序(直接插入和希尔排序)
- 插入排序(直接插入排序和希尔排序)
- 直接插入排序 Shell(希尔)排序
- 插入排序(直接 和 希尔)
- 插入排序(希尔排序、直接插入、折半插入排序)
- 排序算法(一)------直接插入排序和希尔排序
- 【排序】插入排序(直接插入排序、希尔排序)
- 【排序一】插入排序(直接插入排序&&希尔排序)
- 插入排序-直接插入排序 希尔排序
- 直接插入排序和希尔排序
- java直接插入排序和希尔排序
- 直接插入排序和希尔排序
- 直接插入排序和希尔排序
- 直接插入排序和希尔排序
- 直接插入排序和希尔排序
- 直接插入排序和希尔排序
- ActivityUnitTestCase示例
- POJ 2393 Yogurt factory 【贪心 水】
- 常见的 Android Studio问题
- Java设计模式之策略模式
- hdoj1280前m大的数(sort)
- 插入排序(直接插入排序和希尔(shell)排序
- UCOSIII 任务管理(中)
- Spring学习笔记<一>
- J2EE之基础篇
- poj 2565 Average is not Fast Enough! 水题
- 【leetcode题解】【回溯】【54】【M】Subsets II
- [test]图片
- hdoj1212Big Number(大数)
- 汇编总结