冒泡排序和快速排序的java实现
2017-01-09 12:30
423 查看
转发请注明原创地址 http://www.cnblogs.com/dongxiao-yang/p/6264831.html
冒泡
快速排序1
快速排序2代码优化
冒泡
public static int[] bubble_sort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) {//每次循环代表一轮冒泡,一轮冒泡后顶端的数字一定是最大的 for (int j = 0; j < n - 1 - i; j++) { if (arr[j] < (arr[j + 1])) { int tmp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = tmp; } } } return arr; }
快速排序1
public static void quick_sort(int[] arr, int start, int end) { if (start >= end) { // System.out.println("qs finish"); return; } int x = arr[start]; int s = start; int e = end; while (s < e) { if (arr[e] < x) { for (; s < e; s++) { if (arr[s] > x) { int tmp = arr[s]; arr[s] = arr[e]; arr[e] = tmp; // System.out.println("switch " + arr[s] + " " + // arr[e]); // System.out.println("s is " + s + " e is " + e); break; } } } else { e--; } } // System.out.println(" the end s is " + s + " e is " + e + // " arr[s] is " // + arr[s]+" arr[start] is "+arr[start]); arr[start] = arr[s]; arr[s] = x; System.out.println("quick_sort is "+Arrays.toString(arr)); quick_sort(arr, start, s - 1); quick_sort(arr, s + 1, end); }
快速排序2代码优化
public static void quick_sort2(int[] arr, int start, int end) { if (start < end) { int x = arr[start]; int s = start; int e = end; while (s < e) { //退出循环代表一轮排序结束,首尾游标相遇 while (s < e && (arr[e] >= x)) // 从右向左找第一个小于x的数 { e--; } while (s < e && (arr[s] <= x)) // 从右向左找第一个小于x的数 { s++; } if (s < e) {// 左右两个数交换 int tmp = arr[s]; arr[s] = arr[e]; arr[e] = tmp; // System.out.println("switch " + arr[s] + " " + arr[e]); // System.out.println("s is " + s + " e is " + e); } } arr[start] = arr[s]; //基准数归位到数组中正确位置 arr[s] = x; System.out.println("quick_sort2 is "+Arrays.toString(arr)); quick_sort2(arr, start, s - 1); quick_sort2(arr, s + 1, end); } }
相关文章推荐
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序
- java实现排序算法之交换排序(冒泡排序和快速排序)
- java实现冒泡排序,选择排序,直接插入排序,快速排序
- Java 冒泡排序与快速排序的实现
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
- Java实现交换排序 之 冒泡排序和快速排序
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
- java中各种常用排序实现(直接插入排序、直接选择排序、堆排序、冒泡排序、快速排序和归并排序)
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
- 必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序
- java 冒泡排序和快速排序 实现
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
- java实现冒泡排序,插入排序,选择排序,快速排序
- Java实现四种排序:桶排序,冒泡排序,选择排序,快速排序
- 冒泡排序和快速排序java实现
- 必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序
- Java 冒泡排序与快速排序的实现