首页 > 代码库 > 快速排序
快速排序
快速排序是从起泡排序改进而得的一种“交换”排序方法。它的基本思想是通过一趟排序将待排记录分割成相邻的两个区域,其中一个区域中的元素均比另一个区域中元素小(区域内不见得有序)则可对这两个区域内的元素进行再排序,以达到整个序列有序。
//快速排序#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 ;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。