标签:style blog color art for io
快速排序是从起泡排序改进而得的一种“交换”排序方法。它的基本思想是通过一趟排序将待排记录分割成相邻的两个区域,其中一个区域中的元素均比另一个区域中元素小(区域内不见得有序)则可对这两个区域内的元素进行再排序,以达到整个序列有序。
//快速排序 #include<stdio.h> int Partition(int a[] , int low , int high) { //一次划分 int pivotkey = a[low] ; while(low < high) { while(low < high && a[high] >= pivotkey) high-- ; if(low < high) a[low++] = a[high] ; while(low < high && a[low] <= pivotkey) low++ ; if(low < high) a[high--] = a[low] ; } a[low] = pivotkey ; return low ; } void Qsort(int a[] , int s , int t) { if(s < t) { int pivotloc = Partition(a,s,t) ;//一次划分 通过一趟排序将待排元素分割成两个相邻的区域,一个区域中元素都比pivotloc小,另一个区域元素都比pivotloc大 Qsort(a,s,pivotloc-1) ; //左边递归 分别对两个区域的元素再排序 Qsort(a,pivotloc+1,t) ; //右边递归 分别对两个区域的元素再排序 } } int main() { int a[] = {49,38,65,97,76,13,27,49} ; Qsort(a,0,7); int i ; for(i = 0 ; i < 8 ; i++) printf("%d ",a[i]); printf("\n"); return 0 ; }
标签:style blog color art for io
原文地址:http://www.cnblogs.com/scottding/p/3845009.html