首页 > 编程语言 > 详细

快速排序

时间:2015-03-22 20:53:40      阅读:180      评论:0      收藏:0      [点我收藏+]

快速排序

时限:1000ms 内存限制:10000K  总时限:3000ms

描述
给定一个数列,用快速排序算法把它排成升序。
 
输入
第一行是一个整数n,表示要排序的数的个数;下面一行是用空格隔开的n个整数。
 
输出
输出排序后的数列,每个数字占一行。
 
输入样例
5
3 2 1 4 5
 
输出样例
1
2
3
4
5
 #include <iostream>
  
  using namespace std;
  
  void quicksort(int *datapointer,int low,int high)
  {
  
      if(low>=high)
          return;
     int i = low;
     int j = high;
     int key = datapointer[low];
 
     while(i<j)
     {
 
         while(datapointer[j]>=key&&i<j)
             j--;
         datapointer[i] = datapointer[j];
         //cout<<"hello"<<endl;
         while(datapointer[i]<=key&&i<j)
             i++;
         datapointer[j] = datapointer[i];
     }
     datapointer[i] = key;
     quicksort(datapointer,low,i-1);
     quicksort(datapointer,i+1,high);
 }
 
 int main()
 {
     int *datapointer,num;
     cin>>num;
     datapointer = new int[num+1];
     for(int i = 1;i <= num; i++)
         cin>>datapointer[i];
 
 
 
     quicksort(datapointer,1,num);
     for(i = 1;i <= num; i++)
         cout<<datapointer[i]<<" ";                                              
     cout<<endl;                                                                 
     return 0;
 }

  

快速排序

原文:http://www.cnblogs.com/lxk2010012997/p/4357931.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!