• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
泛舟
欲穷千里目,更上一层楼
博客园    首页    新随笔    联系   管理    订阅  订阅

快速排序算法

 

已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组

算法过程
  设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是:
  1)设置两个变量I、J,排序开始的时候:I=1,J=N;
  2)以第一个数组元素作为关键数据,赋值给X,即 X=A[1];
  3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换;
  4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于X的值,让该值与X交换;
  5)重复第3、4步,直到 I=J;
public static void main (String[] args)
{
  QuickSort  sort = new QuickSort();
int array = {2,3,4,5,4,3,6};
test.array = array;
test.run();
for(int i=0 ; i<length ; i ++)
{
  Console.Write(test.array[i];);
}
}


public class QuickSort()
{
  public int[] array =null;

 public void run()
 {
  if(array== null )return;
 }

 private void sort(int lowest,  int hightest )
 {
  if(loset<=0 || lowest >= hightest)
  {
   return;
  }
  
  keyData = array[lowest];
  keyIndex= 0;
  hight = hist
  low = lowlis;
  for( ; low <=hight; heiht--; low ++)
  {
   for(j= hight;j>low ;j--)
          {
    if(key > array[j])
    {
       swapLowHight(array[low], array[j] );
       keyIndex= j;
        break;
    }
   }
   
   for(i= low; i<hight ; i++)
   {
    if(key>array[i])
    {
     swapLowHight(array[low], array[keyIndex] );
     keyIndex= i;
             break;
    }
   }
  }
  sort( lowest,keyIndex-1);
  sort( keyIndex +1 , hight);
  
 }

}

 

posted @ 2009-08-13 00:53  7goal  阅读(499)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3