快速排序算法。

来源:互联网 发布:nokia c6 linux系统 编辑:程序博客网 时间:2024/06/07 07:21

大神博客在此,参考后自己能写出程序了。

http://blog.csdn.net/morewindows/article/details/6684558

#include<stdio.h>
int AdjustArray(int s[],int l,int r);
int quick_sort(int s[],int l,int r);
void main(){
int s[10]={72,6,57,88,60,42,83,73,48,85};
int i;
quick_sort(s,0,10);
for(i=0;i<10;i++){
printf("%d\n",s[i]);
}

int AdjustArray(int s[],int l,int r){
int i=l,j=r;
int x=s[i];
while(i<j){

while(i<j&&x<s[j])j--;
if(i<j){
s[i]=s[j];//挖j坑并填i坑,
i++;//以此i+1坑为点,向中间搜索。 
}

while(i<j&&s[i]<x)i++;
if(i<j){
s[j]=s[i];//挖i坑并填j坑,
j--;//以此j+1坑为点,向中间搜索。
}
}
x=s[i];//此时a[i]==a[j],i,j指向同一元素。 
return i; 
}
int quick_sort(int s[],int l,int r){
if(l<r){//大前提。 
int i=AdjustArray(s,l,r);
quick_sort(s,l,i-1);
quick_sort(s,i+1,r);
}


}

0 0
原创粉丝点击