java 快速排序
2017-07-15 16:54
232 查看
方法一 单位交换
/* 从前往后开始,
令左边第一个元素为标志位,先取右边比标志位小的第一个数,交换位置
然后从左边取比标志位大的第一个数,交换位置,一次累计 */ class QuickShort { public static int j=1; public static void main(String[] args) { int[] a = new int[]{2,4,9,3,6,7,1,5}; Qshort(a,0,a.length-1); // for (int x:a ) // { // System.out.print(x+" "); // } } public static int quickshort(int[] a,int start,int end) { int base=a[start]; while (start<end) { //判断右边比标志位小的元素 while (start<end && a[end]>=base) { end--; } if (start<end) { int temp=a[start]; a[start]=a[end]; a[end]=temp; start++; } //判断左边比标志位大的元素 while(start<end && a[start]<=base) { start++; } if (start<end) { int temp=a[start]; a[start]=a[end]; a[end]=temp; end--; } } System.out.print("第"+j+"次排序后结果为:\t"); for (int x:a ) { System.out.print(x+" "); } j++; System.out.println(); return start; } public static void Qshort(int[] a,int start,int end) { if (start>=end) { return; } else { int point=quickshort(a,start,end); Qshort(a,start,point-1); Qshort(a,point+1,end); } } }
方法二:双位交换
/* 取中间元素为标志位
找到左边第一个比标志位大的第一个数与右边比标志位小的第一个数,交换位置,循环
*/
class QuickShort_2
{
public static int j=1;
public static void main(String[] args)
{
int[] a = new int[]{2,4,9,3,6,7,1,5};
Qshort(a,0,a.length-1);
}
public static int quickshort(int[] a,int start,int end)
{
int mid=(start+end)/2;
int base=a[mid];
while (start<end)
{
while (start<end && a[end]>base)
{
end--;
}
while(start<end && a[start]<base)
{
start++;
}
if (start<end)
{
int temp=a[start];
a[start]=a[end];
a[end]=temp;
}
}
System.out.print("第"+j+"次排序后结果为:\t");
for (int x:a )
{
System.out.print(x+" ");
}
j++;
System.out.println();
return start;
}
public static void Qshort(int[] a,int start,int end)
{
if (start>=end)
{
return;
}
else
{
int point=quickshort(a,start,end);
Qshort(a,start,point-1);
Qshort(a,point+1,end);
}
}
}
相关文章推荐
- Java实现快速排序
- JAVA-最简单的快速排序
- Java数组排序算法,冒泡,选择,插入,快速排序
- 快速排序及Java实现
- java实现快速排序
- Java 实现的快速排序
- 快速排序--Java实现
- java数据结构排序之快速排序
- Java中常见的数组排序算法(包括冒泡,选择,插入,快速排序)
- 算法笔记 - 数组与单链表快速排序(Java)
- java实现快速排序
- 【排序算法】快速排序原理及Java实现
- 快速排序及Java实现
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现) .
- java快速排序笔记
- 排序算法之冒泡排序和快速排序(Java版)
- 【快速排序详解以及java实现】
- Java实现单链表的快速排序和归并排序
- Java快速排序
- 排序算法(Java语言)——快速排序