算法导论-快速排序-C语言

来源:互联网 发布:安卓处理json实体类 编辑:程序博客网 时间:2024/05/16 14:37
#include <stdio.h>#include <stdlib.h>#define MAX_INT 655354#define NUM 16void exchange(int array[],int a, int b);void printArray(int array[], int length);void quickSort(int array[],int p,int r);int partition(int array[],int p,int r);int main(){    int array[NUM] = {23,12,3,4,2,3,234,5655,34,123,445,44,3,4,56,78};    int i ;        quickSort(array,0,NUM - 1);    printArray(array,NUM);    return 0;}void quickSort(int array[],int low,int high){    int q;    if(low < high)    {        q = partition(array,low,high);        quickSort(array,low,q - 1);        quickSort(array,q + 1,high);    }}int partition(int array[],int low,int high){    int i = low;    int j = high;    int key = array[low];    while(i < j)    {        while(i < j && array[j] >= key)        {            --j;        }        array[i] = array[j];        while(i < j && array[i] <= key)        {            ++i;        }        array[j] = array[i];    }    array[i] = key;    return i;}
// Another partion method
/*int partion(int array[], int p, int r){    int key = array[r];    int i = p - 1;    int j;    for(j = p; j < r; ++j)    {        if(array[j] <= key)        {            ++i;            exchange(array,i,j);        }    }    exchange(array,i + 1,r);    return i + 1;}*/void printArray(int array[], int length){    int i;    for(i = 0; i < length; ++i )    {        printf("%d ",array[i]);    }    printf("\n");}

0 0
原创粉丝点击