Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38500
  • 博文数量: 64
  • 博客积分: 2640
  • 博客等级: 少校
  • 技术积分: 670
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-26 13:15
文章分类
文章存档

2010年(64)

我的朋友
最近访客

分类: C/C++

2010-01-26 13:44:30

2008-10-02 11:39


#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int partition(int array[],int i,int j);
void qs(int array[],int i,int j);
int main(void){
    int n,i,arr[100];
   
    cin>>n;
    srand(time(NULL));
    for(i=0;i<n;i++) arr[i] = rand();;
   
    qs(arr,0,n-1);
   
    for(i=0;i<n;i++) cout<<arr[i]<<"\t";
    getchar();getchar();
   
    return 0;
}
int partition(int array[],int i,int j){
    int k = array[i];
   
    do{
        while((i<j)&&array[j]>=k) j--;
        if(i<j){ array[i] = array[j]; i++;}
       
        while((i<j)&&array[i]<=k) i++;
        if(i<j){ array[j] = array[i]; j--;}
    }while(i!=j);
    array[i] = k;
   
    return i;
}
void qs(int array[],int i,int j){
     if(i>=j) return;
     int m = partition(array,i,j);
     qs(array,i,m-1);
     qs(array,m+1,j);
 }


阅读(153) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~