您的位置:首页 > 运维架构 > Linux

LinuxC/C++编程基础(10) quicksort的简单实现

2012-11-27 18:20 816 查看
源代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define ARRAYLENGTH 30

#define RANGE 100

void swap(int& key1,int& key2){

int temp = key1;

key1 = key2;

key2 = temp;

}

int partition(int A[],int p,int r){

int x = A[r];

int i = p - 1;

for(int j=p;j<r;++j){

if(A[j] <= x){

i += 1;

swap(A[i],A[j]);

}

}

swap(A[i+1],A[r]);

return i+1;

}

void quicksort(int A[],int p,int r){

int q = 0;

if(p < r){

q = partition(A,p,r);

quicksort(A,p,q-1);

quicksort(A,q+1,r);

}

}

int main(int argc,char** argv){

int A[ARRAYLENGTH] = {-1};

srand(time(NULL));

for(int i=0;i<ARRAYLENGTH;++i){

A[i] = rand() % RANGE;

}

printf("before quicksort\n");

for(int k=0;k<ARRAYLENGTH;++k){

printf("%d ",A[k]);

}

quicksort(A,0,ARRAYLENGTH-1);

printf("\nafter quicksort\n");

for(int j=0;j<ARRAYLENGTH;++j){

printf("%d ",A[j]);

}

return 0;

}

说明:代码简洁明了,无需赘述

转载请注明出处:山水间博客 /article/2317643.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: