记录,已做参考。
1.快速排序:
void quickSort(int a[],int first,int end){
int temp = a[end];
int c = first,b = end;
if(first<end){
while(first<end){
while(first<end&&a[first]<temp)
first++;
if(first<end){
a[end] = a[first];
end--;
}
while(first<end&&a[end]>temp)
end--;
if(first<end){
a[first] = a[end];
first++;
}
}
a[first] = temp;
quickSort(a,c,first-1);
quickSort(a,first+1,end);
}
}
2.快速选择:选取一个数值中最小的K个值。
void quickSelect(int a[],int first,int end, int number){
int temp = a[end];
int c = first, b = end;
if(!a&&number<=0) return ;
if(c<b){
while(c<b){
while(c<b&&a[c]<temp)
c++;
if(c<b){
a[b] = a[c];
b--;
}
while(c<b&&a[b]>temp)
b--;
if(c<b){
a[c] = a[b];
c++;
}
}
a[c] = temp;
if((c-first)>number){
quickSelect(a,first,c-1,number);
}else if((c-first)<number){
quickSelect(a,c+1,end,(number-c-1));
}
}
}