码迷,mamicode.com
首页 > 编程语言 > 详细

排序-快速排序

时间:2015-09-30 17:52:17      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

主要思路:
分治思想
 
先将数组打乱
取数组第一个元素k作为比对标准,
将大数组拆分,循环,将大于k的放置于右侧,将小于k的放置于左侧
while(true)
{
while(k>a[++i]);
while(k<a[--j]);
if(i>=j)
break;
swap(a,i,j);
}
swap(a,low,j);
最后将k放入j的位置
接着递归,将数组的a[low]-a[j-1],a[j+1]-a[high]继续重复此步骤,直到直到>=high。
 
 
public class Queen8 {
 
 public static void sort(int a[],int start,int end)
 {
  if(start>=end)
   return;
  int j=part(a,start,end);
  sop(j);
  sort(a,start,j-1);
  sort(a,j+1,end);
 }
 public  static int part(int a[],int start,int end)
 {
  int k = a[start];
  int i=start,j=end+1;
  while(true)
  {
   while(k>a[++i]); //可以在这里加入限制,防止越界。
   while(k<a[--j]);
    if(i>=j)
    break;
   swap(a,i,j);
   
  }
  swap(a,start,j);
  return j;
 }
 public static void swap(int []a ,int i,int j)
 {
  int temp=a[i];
  a[i]=a[j];
  a[j]=temp;
 }
    public static void main(String args[])
    {
     int a [] = {5,10,1,2,3,6,4,7,8,9,0};
     
     sort(a,0,a.length-1);
     for(int i=0;i<a.length;i++)
     {
      System.out.print(a[i]+",");
     }
    }
   
 public static void sop(Object o)
 {
  System.out.println(o);
 }
 
}

排序-快速排序

标签:

原文地址:http://www.cnblogs.com/hitxx/p/4849650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!