快速排序算法

来源:互联网 发布:火星哥 知乎 编辑:程序博客网 时间:2024/06/06 18:41
#include<stdio.h>//快速排序#define SIZE 8void sort(int *a,int left,int right);int main(){    int i;    int a[SIZE] = {50,36,66,76,36,12,25,95};    sort(a,0,SIZE-1);    for(i=0;i<SIZE;i++)        printf("%d  ",a[i]);    printf("\n");    return 0;}void sort(int *a,int left,int right){    if(left >= right)        return;    int i = left;//i,j是需要改变的边界值    int j = right;    int key = a[left];//每次大循环都是把最左边的定义为基准值    while(i < j)    {        while(i < j && key <= a[j])        {            j--;            }        a[i] = a[j];        while(i < j && key >= a[i])        {            i++;        }        a[j] = a[i];    }    a[i] = key;//大循环一遍后,把基准key回归    //左半部分排序    sort(a,left,i-1);    //右半部分排序    sort(a,i+1,right);}
原创粉丝点击