一個C快速排序算法

#include
#define N 10

void quicksort(int a[], int low, int high);
int split(int a[], int low, int high);
int main()
{
int a[N] = {7, 3, 34, 12, 4, 5, 9, 10, 6, 11};
int i;
//printf("Please enter %d numbers. \n", N);


//for(i=0; i<N; i++)
//scanf("%d", &a[i]);
quicksort(a, 0, N-1);

for(i=0; i<N; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}


void quicksort(int a[], int low, int high)
{
int middle;


if(low >= high)
return;
middle = split(a, low, high);
quicksort(a, low, middle-1);
quicksort(a, middle+1, high);
}


int split(int a[], int low, int high)
{
int part_element = a[low];


for(;;)
{
while(low < high && part_element <= a[high])
high--;
if(low >= high)
break;
a[low++] = a[high];


while(low < high && a[low] <= part_element)
low++;
if(low >= high)
break;
a[high--] = a[low];
}


a[high] = part_element;
return high;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章