基本排序算法总结
来源:互联网 发布:网络建设与管理试题 编辑:程序博客网 时间:2024/06/10 19:57
1、选择排序
首先找到数组中最小的元素,然后将其与第一个元素交换,如果最小元素是自己,就和自己交换。然后继续找后面元素中最小,与第二个元素交换,如此往复,直到最后一个元素。
排序代码如下
public static void Sort(Comparable[] a) //选择排序{int N = a.length;for (int i = 0; i < N; i++) {for (int j = i+1; j < N; j++) {int min = i;if(less(a[j], a[min])) min = j;exch(a,i,min);}}}2、插入排序
从第二个元素开始,与前一个元素相比,如果是小于,则交换,以此类推,直到元素到达最左边,或者比前一个元素大。
排序代码如下
public static void Sort(Comparable[] a) {int n = a.length;for(int i = 0; i < n; i++) {for (int j = i; j > 0; j--) {if(less(a[j], a[j-1])) {exch(a, j, j-1);}else break;}}}3、希尔排序以插入排序为基础,每次移动h个单位,h = 3*h+1.目的是使得数组通过前几次的排序使得其基本有序,最后当h = 1时利用插入排序可以很快将其排序
排序代码
public static void Sort(Comparable[] a) {int n = a.length;int h = 1;while (h < n/3) h = 3*h+1;while(h>=1) {for(int i = h; i < n; i++) {for (int j = i; j >= h; j-=h) {if(less(a[j], a[j-h]))exch(a, j, j-h);else break;}}h = h/3;}}示意图如下4、归并排序(目前比较厉害的排序算法)
归并排序利用分治思想,将待排序的序列分成两个小的序列,将两个小序列排序后,并在一起。
示意图如下:
递归代码如下:
private static void sort(double[] a, double[] aux, int lo, int hi) { if (hi <= lo) return; int mid = lo + (hi - lo) / 2; sort(a, aux, lo, mid); sort(a, aux, mid + 1, hi); Merge(a, aux, lo, mid, hi); }
阅读全文
0 0
- 基本排序算法总结
- 基本排序算法总结
- 基本排序算法总结
- 基本排序算法总结
- 基本排序算法总结
- 基本排序算法总结
- 各种基本排序算法总结
- 基本排序(五):基本排序算法的总结
- 基本的排序算法总结分析
- 各种基本排序算法的总结
- 各种基本排序算法的总结
- 找工作-基本查找排序算法总结
- 基本排序算法总结(C/C++)
- 九种基本排序算法总结
- 八种基本排序算法总结
- JAVA最基本的排序算法总结
- 算法学习(五)----基本排序算法总结
- 算法基础:基本排序算法原理、实现与总结
- 3种预编译
- PAT 乙级 1022
- c语言三字母词(trigraph) && 整型提升
- C++ 图论-并查集
- 【CUGBACM15级BC第29场 B】hdu 5171 GTY's birthday gift
- 基本排序算法总结
- web.config 中SessionState的配置
- 几个问题
- day4_字符串反转问题
- 修改ternimal个性化设置
- Python:获取当前脚本路径的姿势对比
- shell杀死进程, adb server is out of date. killing
- 脱敏数据整理
- win7 VS2013 新建工程 编译lua5.1 静态库