1. 程式人生 > >C語言學習13

C語言學習13

排序 %d uic pri quick class 學習 span bsp

快速排序

 1 //快速排序
 2 #include <stdio.h>
 3 
 4 void quicksort(int a[], int left, int right);
 5 
 6 void main()
 7 {
 8     int a[10] = {99, 45, 12, 36, 69, 22, 62, 796, 4, 696};
 9     int i;
10     printf("初始排序: \n");
11     for(i = 0; i < 10; i++)
12     {
13         printf("    %d", a[i]);
14
} 15 quicksort(a, 0, 10); 16 printf("\n快速排序後的結果:\n"); 17 for(i=0; i<10; i++) 18 { 19 printf(" %d", a[i]); 20 } 21 printf("\n"); 22 } 23 24 void quicksort(int a[], int left, int right) 25 { 26 int j = left, k = right, temp, point; 27 28 point = a[(left + right) / 2
]; 29 30 while(j <= k) 31 { 32 while(a[j] < point) 33 { 34 j++; 35 } 36 while(a[k] > point) 37 { 38 k--; 39 } 40 if(j <= k) 41 { 42 temp = a[j]; 43 a[j] = a[k]; 44 a[k] = temp;
45 j++; 46 k--; 47 } 48 } 49 if(left<k) 50 { 51 quicksort(a, left, k); 52 } 53 if(j<right) 54 { 55 quicksort(a, j, right); 56 } 57 }

C語言學習13