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
#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
相关文章推荐
- LinuxC/C++编程基础(6) 堆排序的实现
- LinuxC/C++编程基础(33) 视频包缓存的实现(续1)
- LinuxC/C++编程基础(20) 使用boost::asio搭建服务器简单实例
- LinuxC/C++编程基础(13) shell脚本简单实例
- LinuxC/C++编程基础(24) 使用thrift/rpc开发简单实例(续2)
- LinuxC/C++编程基础(9) 二叉查找树的实现
- LinuxC/C++编程基础(21) 使用boost::asio搭建服务器简单实例(续)
- LinuxC/C++编程基础(23) 使用thrift/rpc开发简单实例(续1)
- LinuxC/C++编程基础(30) 视频包缓存的实现
- LinuxC/C++编程基础(4) 基于泛型实现vector
- Linux 网络编程基础(一) ---------------客户端/服务器的简单实现
- LinuxC/C++编程基础(12) 红黑树的实现
- LinuxC/C++编程基础(36) Poco::BinaryReader的实现
- LinuxC/C++编程基础(37) Cumulus::BinaryReader的实现
- LinuxC/C++编程基础(19) 不可复制类的原理及实现
- LinuxC/C++编程基础(31) 使用thrift/rpc开发简单实例(续3)
- Linux 网络编程基础 客户端/服务器的简单实现
- LinuxC/C++编程基础(32) 使用thrift/rpc开发简单实例(续4)
- Linux 网络编程基础(一) ---------------客户端/服务器的简单实现
- Linux 网络编程基础(一) ---------------客户端/服务器的简单实现