六大经典排序算法(Java版):冒泡、选择、插入、希尔、快速、归并
来源:互联网 发布:淘宝永久封店重新开通 编辑:程序博客网 时间:2024/04/28 07:01
/** * @author Darren * @Date 2016-10-17 */public class Main { public static void main(String[] args) { int[] ars = {2, 5, 9, 13, 28, 79, 2, 87}; System.out.println("Original Array:"); myPrintArray(ars); int[] ars1 = myBubbleSort(ars); System.out.println("BubbleSort:"); myPrintArray(ars1); int[] ars2 = myChooseSort(ars); System.out.println("ChooseSort:"); myPrintArray(ars2); int[] ars3 = myInsertSort(ars); System.out.println("InsertSort:"); myPrintArray(ars3); int[] ars4 = myShellSort(ars); System.out.println("ShellSort:"); myPrintArray(ars4); myFastSort(ars, 0,ars.length-1); System.out.println("FastSort:"); myPrintArray(ars); int[] ars11 = {2, 5, 9, 87, 28, 79, 2, 13}; myMergeSort(ars11, 0, ars11.length-1); System.out.println("MergeSort:"); myPrintArray(ars11); }/** * @param ars the input array */ public static void myPrintArray(int[] ars) { for(int a: ars) { System.out.print(a+" "); } System.out.println(); }/** * @param ars the input array * @return ars the bubble sorted array */ private static int[] myBubbleSort(int[] ars) { int i, j, temp; for(i=0; i<ars.length; i++) { for(j=ars.length-1; j>i; j--) { if(ars[j]<ars[j-1]) { temp = ars[j]; ars[j] = ars[j-1]; ars[j-1] = temp; } } } return ars; }/** * @param ars the input array * @return ars the sorted array */ public static int[] myChooseSort(int[] ars) { int i, j, index, temp; for(i=0; i<ars.length; i++) { index = i; for(j=i+1; j<ars.length; j++) { if(ars[j]<ars[index]) { index = j; } } temp = ars[index]; ars[index] = ars[i]; ars[i] = temp; } return ars; }/** * @param ars the input array * @return ars the sorted array */ public static int[] myInsertSort(int[] ars) { int i, j, ai; for(i=1; i<ars.length; i++) { ai = ars[i]; for(j=i-1; j>=0; j--) { if(ars[j]>ai) { ars[j+1] = ars[j]; }else { break; } } ars[j+1] = ai; } return ars; } /** * @param ars the input array * @return ars the sorted array */ public static int[] myShellSort(int[] ars) { int i, j, ai, d=1; while(9*d<ars.length) { d=3*d+1; } while(d>0) { for(i=d; i<ars.length; i++) { ai = ars[i]; for(j=i-d; j>=0; j-=d) { if(ars[j]>ai) { ars[j+d] = ars[j]; }else { break; } } ars[j+d] = ai; } d/=3; } return ars; }/** * @param ars the input array * @param start the start index of ars * @param end the end index of ars * @param basicValue the compared value of fast sorting method * @return ars the sorted array */ public static void myFastSort(int[] ars, int start, int end) { if(start<end) { int i=start, j=end, basicValue=ars[start]; while(i<j) { while(i<j && ars[j]>=basicValue) { j--;} if(i<j) { ars[i] = ars[j];} while(i<j && ars[i]<=basicValue) { i++;} if(i<j) { ars[j] = ars[i];} } ars[i] = basicValue; myFastSort(ars, start, i-1); myFastSort(ars, j+1, end); } }/** * @param ars the input array * @param start the start index of ars * @param end the end index of ars * @param middle the middle index of merge sorting method * @return ars the sorted array */ public static void myMergeSort(int[] ars, int start, int end) { if(start<end) { int middle = (start+end)/2; myMergeSort(ars, start, middle); myMergeSort(ars, middle+1, end); merge(ars, start, middle, end); } } public static void merge(int[] ars, int start, int middle, int end) { int i=start, j=middle+1, k=0; int[] temp = new int[end-start+1]; while(i<=middle && j<=end) { temp[k++] = ars[i]<=ars[j] ? ars[i++]:ars[j++]; } if(i<=middle && j>end) { System.arraycopy(ars, i, ars, start+k, middle-i+1); } System.arraycopy(temp, 0, ars, start, k); }}
0 0
- 六大经典排序算法(Java版):冒泡、选择、插入、希尔、快速、归并
- 六大经典排序算法 java 选择排序、插入排序、冒泡排序、快速排序、堆排序、归并排序,六大经典排序算法,
- 六大经典排序算法 java 选择排序、插入排序、冒泡排序、快速排序、堆排序、归并排序,六大经典排序算法,
- 冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序六大排序大总结
- 排序算法Java描述:选择、冒泡、插入、希尔、归并、快速及三向切分快速排序
- 排序算法-冒泡、插入、归并、希尔、快速、选择--代码总结
- 常用排序算法--冒泡,插入,选择,希尔,归并,快速
- 冒泡、选择、快速、插入、希尔、归并排序算法的小结
- 插入 | 希尔 | 冒泡 | 快速 | 选择 | 归并排序
- 排序算法,选择,插入,冒泡,希尔,归并
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序
- 《冒泡,选择,插入,归并,希尔,快速》排序算法java实现一览
- java排序算法(冒泡,插入,选择,快速,堆,归并,希尔,基数)
- 小白学数据结构——四、排序算法Python(冒泡、选择、快速、插入、希尔、归并排序)
- Java语言实现九大排序算法(快速、归并、堆、选择、插入、计数、基数、希尔、冒泡)
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- python(三)6种排序算法性能比较(冒泡、选择、插入、希尔、快速、归并)
- 10种排序算法总结(冒泡、选择、插入、希尔、归并、快速、堆、拓扑、锦标赛、基数)
- 【NOIP2012模拟11.6】背包问题
- DEV 的使用技巧(开学季)
- scala基础----->拆分List操作
- xilian5 ohih
- Sizeof与Strlen的区别与联系
- 六大经典排序算法(Java版):冒泡、选择、插入、希尔、快速、归并
- HADOOP自带测试类介绍及使用
- 宏与预处理&函数与函数库
- sqlite3小型数据库移植到arm,让arm跑起聊天室的服务器
- mysql里面简单常用的sql语句
- Locust性能测试学习总结
- java学习之路 之 高级类特性2-接口(interface)-练习题
- urllib2.urlopen 返回403
- POJ 3304 Segments(计算几何)