java两种方法实现快速排序
2016-10-30 15:48
387 查看
快速排序
快速排序就是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
1.第一种实现方法(容易理解)
2.第二种实现方法
快速排序就是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
1.第一种实现方法(容易理解)
package com.quick; public class quick { public void quick_sort(int[] arrays, int lenght) { if (null == arrays || lenght < 1) { System.out.println("input error!"); return; } _quick_sort(arrays, 0, lenght - 1); } public void _quick_sort(int[] arrays, int start, int end) { if(start>=end){ return; } int i = start; int j = end; int value = arrays[i]; boolean flag = true; while (i != j) { if (flag) { if (value > arrays[j]) { swap(arrays, i, j); flag=false; } else { j--; } }else{ if(value<arrays[i]){ swap(arrays, i, j); flag=true; }else{ i++; } } } snp(arrays); _quick_sort(arrays, start, j-1); _quick_sort(arrays, i+1, end); } public void snp(int[] arrays) { for (int i = 0; i < arrays.length; i++) { System.out.print(arrays[i] + " "); } System.out.println(); } private void swap(int[] arrays, int i, int j) { int temp; temp = arrays[i]; arrays[i] = arrays[j]; arrays[j] = temp; } public static void main(String args[]) { quick q = new quick(); int[] a = { 49, 38, 65,12,45,5 }; q.quick_sort(a,6); } }
2.第二种实现方法
package com.beyond.test; public class QuickSort { // 静态快速排序函数,传入一个数组,开始和结束排序位置 public static void sort(int data[], int start, int end) { if (start>end) { return; } int last = start; for (int i = start + 1; i <= end; i++) { if (data[i] < data[start]) { int temp = data[++last]; data[last] = data[i]; data[i] = temp; } } int temp = data[last]; data[last] = data[start]; data[start] = temp; sort(data, start, last - 1); sort(data, last + 1, end); } public static void main(String[] args) { int[] a = { 4,2,5,1,6}; sort(a, 0, 4); for (int aa : a) { System.out.println(aa + "--"); } } }
相关文章推荐
- java实现快速排序两种方法
- 在DWR中实现直接获取一个JAVA类的返回值的两种方法
- 蛇形矩阵的两种实现方法(java版本)
- java实现多线程的两种方法
- 【转载】JAVA中线程的两种实现方法-实现Runnable接口和继承Thread类
- Java遍历Map的两种实现方法
- Java实现多线程的两种方法
- 在Java中实现线程的两种方法
- java下实现多线程的两种方法
- java 卖票程序的两种实现方法
- java多线程学习一:实现多线程的两种方法
- java反射中两种方法的不同(反射能否实现对类的私有方法的调用)
- JAVA中创建线程对象的两种方法:继承Thread和实现Runable
- java实现线程的两种方法有什么区别?
- 在DWR中实现直接获取一个JAVA类的返回值的两种方法
- java实现多线程有两种方法
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- java实现多线程的两种方法的比较
- 【java实现多线程的两种方法】
- JAVA中实现四舍五入的两种方法