首页 > 代码库 > 常见排序__总结
常见排序__总结
文章来自:http://www.iteye.com/topic/1129454
一、概括
1.冒泡排序
(1)基本思想:在一个序列元素中,比较相邻的两个数,如果相邻的数的顺序与想要输出的顺序相反就要进行交换,到序列末尾有序列中的最大值或者最小值在数组的一端。
(2)实例:
(3)优缺点
(4)性质
(5)Java代码实现
package sorts; public class 冒泡排序 { public static void main(String[] args) { int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; changeSort(a); } private static void changeSort(int[] a) { int temp; for(int i=0; i<a.length; i++){ for(int j=i+1; j<a.length; j++){ if(a[i]>a[j]){ temp = a[i]; a[i] = a[j]; a[j] = temp; } } } for(int k=0; k<a.length; k++) System.out.println(a[k]); } }
2.快速排序
(1)基本思想:
1.选择一个哨兵(序列中的第一个元素),序列中有两个标识元素分别指向序列的头部和尾部,两标识分别向中间归拢;
2.首先从序列末尾开始找小于哨兵的元素,找到元素和低位指针所指元素进行交换;
3.然后再从左向中找大于哨兵的元素然后交换高位指针所指向的元素;
4.循环以上的步骤,直到两个指针标识碰头完成一次排序;
5.然后再递归,被分开的子序列进行同样的操作。直到子序列中只剩下两个元素,停止递归,完成排序。
(2)实例:
(3)优缺点
(4)性质
(5)Java代码实现
package sorts; public class 快速排序 { public static void main(String[] args) { int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; quick(a); for(int i=0; i<a.length;i++){ System.out.println(a[i]); } } private static void quick(int[] a2) { //查看数组是否为空 if(a2.length>0){ _quickSort(a2,0,a2.length-1); } } //递归对子序列进行排序 private static void _quickSort(int[] list, int low, int high) { if(low<high){ int middle = getMiddle(list,low,high); _quickSort(list,low,middle-1); _quickSort(list,middle+1,high); } } private static int getMiddle(int[] list, int low, int high) { int tmp = list[low]; while(low<high){ while(low<high && list[high]>=tmp){ high--; } list[low] = list[high]; while(low<high && list[low] <= tmp){ low++; } list[high]=list[low]; } list[low]=tmp; return low; } }
常见排序__总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。