首页 > 代码库 > 快速排序quicksort实现方法
快速排序quicksort实现方法
1 #include <stdlib.h> 2 #include <stdio.h> 3 4 #define ARRAY_SIZE 10 5 6 void swap(int *x, int *y) 7 { 8 int a = *x; 9 *x = *y;10 *y = a;11 }12 13 int randint(int low, int high)14 {15 return (low + (rand() % (high - low + 1)));16 }17 18 void quicksort(int *arr, int low, int high)19 { 20 int i, mid;21 if (low >= high) 22 return;23 swap(arr+low, arr + randint(low, high));24 mid = low;25 for (i = low+1; i <= high; i++)26 {27 if (arr[i] < arr[low])28 {29 swap(arr + ++mid, arr + i);30 }31 }32 swap(arr + low, arr + mid);33 quicksort(arr, low, mid-1);34 quicksort(arr, mid+1, high);35 }36 37 void printArray(int *arr, int size, const char *prefix)38 {39 printf("%s:", prefix);40 for(int i = 0; i < size - 1; i++)41 {42 printf("%d ", arr[i]);43 }44 printf("\n");45 }46 47 int main(int argc, char **argv)48 {49 int array_unsort[ARRAY_SIZE] = {11, 23, 44, 55, 32, 12, 8, 9, 63, 82};50 printArray(array_unsort, ARRAY_SIZE, "before sort");51 quicksort(array_unsort, 0, ARRAY_SIZE-1);52 printArray(array_unsort, ARRAY_SIZE, "after sort");53 return 0;54 55 }
快速排序quicksort实现方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。