有意思的快速排序

来源:互联网 发布:手机淘宝卖家开通花呗 编辑:程序博客网 时间:2024/05/22 15:18

快速排序是一种分治法,先找到一个中点,然后对分别对两段数据进行排序

#include <stdio.h>void merge(int arr[], int start, int end);int partition(int arr[], int start, int end);void swap(int arr[], int x, int y);int main(){        int array[8] = {10, 20, 30, 4, 5, 66, 7, 11},i;        merge(array, 0, 7);        for(i=0;i<8;i++){                printf("%d\t",array[i]);        }        printf("\n");}void merge(int arr[], int start, int end){        int m;        if(start<end){                m = partition(arr, start,  end);                merge(arr, 0, m-1);                merge(arr, m+1, end);        }}int partition(int arr[], int start, int end){        int x = arr[start];        while(start<end){                while(start<end && arr[end]>=x)--end;                swap(arr, start, end);                while(start<end && arr[start]<x)++start;                swap(arr, start, end);        }        return start;}void swap(int arr[], int x, int y){        int temp = arr[x];        arr[x] = arr[y];        arr[y] = temp;}


 

 

原创粉丝点击