(四)快速排序

来源:互联网 发布:梦想小镇mac同步手机 编辑:程序博客网 时间:2024/06/17 11:32
/*****************************************快速排序伪代码:QUICK_SORT(A,p,r)    if(p<r)        then q <—— PARTITION(A,p,r)             QUICK_SORT(A,p,q-1)             QUICK_SORT(A,q+1,r)//核心函数,对数组A[p,r]进行就地重排,将小于A[r]的数移到数组前半部分,将大于A[r]的数移到数组后半部分。PARTITION(A,p,r)    pivot <—— A[r]    i <—— p-1    for j <—— p to r-1        do if A[j] < pivot            i <—— i+1            exchange A[i]<——>A[j]    exchange A[i+1]<——>A[r]return i+1*****************************************/#include <stdio.h>int partition(int *arr,int low,int high){    int pivot=arr[high];    int i=low-1;    int j,tmp;    for(j=low;j<high;++j)        if(arr[j]<pivot){            tmp=arr[++i];            arr[i]=arr[j];            arr[j]=tmp;        }    tmp=arr[i+1];    arr[i+1]=arr[high];    arr[high]=tmp;    return i+1;}void quick_sort(int *arr,int low,int high){    if(low<high){        int mid=partition(arr,low,high);        quick_sort(arr,low,mid-1);        quick_sort(arr,mid+1,high);    }}//testint main(){    int arr[10]={1,4,6,2,5,8,7,6,9,12};    quick_sort(arr,0,9);    int i;    for(i=0;i<10;++i)        printf("%d ",arr[i]);}

原创粉丝点击