常见排序算法
来源:互联网 发布:志鸿优化答案查询 编辑:程序博客网 时间:2024/06/15 00:49
package somesorts;
public class Sort {
public static void main(String[] args) { int[] a= {50, 45, 68, 90, 29, 34, 17}; //bubbleSort(arr); int start = 0; int end = a.length-1; quickSort(a,start,end); for(int i = 0; i<a.length; i++){ System.out.print(a[i] + " "); }}/** * * <p>Discription:[数组遍历]</p> * Created on 2017年5月12日 * @param arr * @author:[风凌渡口] */public static void traversal(int[] arr){ for(int i = 0; i < arr.length; i++){ System.out.print(arr[i] + " "); }}/** * 插入排序 * <p>Discription:[选中的数与他之前拍好序的数冒泡排序]</p> * Created on 2017年5月11日 * @param arr * @author:[风凌渡口] */public static void insertsort(int[] arr){ int tmp; for(int i = 2; i < arr.length; i++){ tmp = arr[i]; int j = i - 1; while(j >= 0 && arr[j] < tmp){ arr[j + 1] = arr[j]; arr[j] = tmp; j--; } } traversal(arr); }/** * * <p>Discription:[选择排序]</p> * Created on 2017年5月12日 * @param arr * @author:[风凌渡口] */public static void selectSort(int[] arr){ int j, tmp; for(int i = 0; i < arr.length; i++){ j = i + 1; for(; j < arr.length; j++){ if(arr[j] < arr[i]){ tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } traversal(arr);}/** * * <p>Discription:[冒泡排序]</p> * Created on 2017年5月12日 * @param arr * @author:[风凌渡口] */public static void bubbleSort(int[] arr){ int j; int tmp; for(int i = 0; i < arr.length ; i++){ j = 0; while(j < arr.length - i - 1){ if(arr[j] > arr[j + 1]){ tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } j ++; } } traversal(arr);}/** * * <p>Discription:[快速排序]</p> * Created on 2017年5月12日 * @param a * @param low * @param high * @author:[风凌渡口] */public static void quickSort(int[] a,int low,int high){ int start = low; int end = high; int key = a[low]; while(end > start){ //从后往前比较 while(end > start && a[end] >= key) //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较 end--; if(a[end] <= key){ int temp = a[end]; a[end] = a[start]; a[start] = temp; } //从前往后比较 while(end > start && a[start] <= key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置 start++; if(a[start] >= key){ int temp = a[start]; a[start] = a[end]; a[end] = temp; } //此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用 } //递归 if(start > low) quickSort(a, low, start-1);//左边序列。第一个索引位置到关键值索引-1 if(end < high) quickSort(a,end+1, high);//右边序列。从关键值索引+1到最后一个}
}
1 0
- 常见的排序算法
- 常见排序算法
- 常见排序算法代码
- 常见排序算法
- 常见排序算法总结
- 常见排序算法
- 常见排序算法学习
- 常见排序算法总结
- 常见的排序算法
- 常见排序算法分析
- 常见排序算法总结
- 常见排序算法
- 常见排序算法
- 常见排序算法介绍
- 常见排序算法小结
- 常见排序算法总结
- 常见经典排序算法
- 常见排序算法
- 上传iOS应用时 ERROR ITMS-90096: Your binary is not optimized for iPhone 5。。。
- JavaScript之异步
- MySql--基本查询
- VC/C#调用lazarus写的dll
- TensorFlow基础(一)
- 常见排序算法
- 算法
- 5.12
- Embedded Wizard 研究笔记 1
- [Binder机制]众多Service启动流程-java层Service(一)
- Unix哲学
- HDU-2191 完全背包
- Android 内容提供者
- CentOS中防火墙相关的命令(CentOS7中演示)