黑马程序员技术交流社区
标题:
有人会快速排序吗,快速排序怎么写啊?
[打印本页]
作者:
itheima2xy
时间:
2015-3-4 12:36
标题:
有人会快速排序吗,快速排序怎么写啊?
有人会快速排序吗,快速排序怎么写啊?
作者:
keeganlee
时间:
2015-3-4 13:05
这个不好说,就是先以一个元素为基准,把所有比他小的放在某一边,比他大的放在另一边,这样这个元素就在最总位置了,然后再递归遍历左边的和右边的就ok了
作者:
Micro
时间:
2015-3-5 11:36
#include <stdio.h>
#include <stdlib.h>
#define N 6
int partition(int arr[], int low, int high){
int key;
key = arr[low];
while(low<high){
while(low <high && arr[high]>= key )
high--;
if(low<high)
arr[low++] = arr[high];
while( low<high && arr[low]<=key )
low++;
if(low<high)
arr[high--] = arr[low];
}
arr[low] = key;
return low;
}
void quick_sort(int arr[], int start, int end){
int pos;
if (start<end){
pos = partition(arr, start, end);
quick_sort(arr,start,pos-1);
quick_sort(arr,pos+1,end);
}
return;
}
int main(void){
int i;
int arr[N]={32,12,7, 78, 23,45};
printf("排序前 \n");
for(i=0;i<N;i++)
printf("%d\t",arr[i]);
quick_sort(arr,0,N-1);
printf("\n 排序后 \n");
for(i=0; i<N; i++)
printf("%d\t", arr[i]);
printf ("\n");
system("pause");
return 0;
}
复制代码
快速排序算法 的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一 部分的数据小,然后将所分得的两部分数据进行同样的划分,重复执行以上的划分操作,直 到所有要进行排序的数据变为有序为止。
作者:
itheima2xy
时间:
2015-3-5 13:19
Micro 发表于 2015-3-5 11:36
快速排序算法 的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一 部 ...
谢谢解答!!!{:2_30:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2