算法快速排序
Posted Coder的自我修养
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法快速排序相关的知识,希望对你有一定的参考价值。
C++快速排序的函数
#include<iostream>
using namespace std;
void QuickSort(int *array,int length){
//中止条件
if(length<=1)
return;
//设定最坏的可能,为两个子数组分配空间
int *left=new int[length],*right=new int[length];
//设定两个子数组的长度初值为零
int left_idx=0,right_idx=0;
//拆分,要求左半部分不大于参照元素
//设定第一个元素为参照元素
int key=array[0];
int i;
for(i=0+1;i<length;i++){
if(array[i] <= key)
left[left_idx++]=array[i];
if(array[i] > key)
right[right_idx++]=array[i];
}
//对子数组排序
QuickSort(left,left_idx);
QuickSort(right,right_idx);
//合并数组
int idx=0;
for(i=0;i<left_idx;i++){
array[idx++]=left[i];
}
array[idx++]=key;
for(i=0;i<right_idx;i++){
array[idx++]=right[i];
}
//释放空间
delete[] left;
delete[] right;
}
int main(){
int test[]={4,3,1,2,4,5,8,7,3,6,9,321};
int i;
QuickSort(test,12);
for(i=0;i<12;i++){
cout<<test[i]<<' ';
}
return 0;}
我的微信公众号
以上是关于算法快速排序的主要内容,如果未能解决你的问题,请参考以下文章