1、快速排序:算法
基本步驟:數組
1 #include <stdio.h> 2 void QuickSort(int arr[], int left, int right) 3 { 4 int i = left; 5 int j = right; 6 int tmp = arr[i];//設定中間數 7 if(i < j)//判斷是否進入遞歸 8 { 9 while(i < j)//判斷是否完成一次快速排序 10 { 11 while((arr[j] > tmp)&&(i < j)) 12 { 13 j--; 14 } 15 arr[i] = arr[j]; 16 while((arr[i] < tmp)&&(i < j)) 17 { 18 i++; 19 } 20 arr[j] = arr[i]; 21 } 22 arr[i] = tmp;//賦值中間數 23 QuickSort(arr, left, i-1);//遞歸中間數左邊的元素 24 QuickSort(arr, j+1, right);//遞歸中間數右邊的元素 25 } 26 else 27 { 28 return; 29 } 30 } 31 int main() 32 { 33 int i = 0; 34 int arr[9] = {5,6,7,1,4,9,3,2,8}; 35 printf("未排序前:"); 36 for(i = 0; i<9; i++) 37 { 38 printf("%d ",arr[i]); 39 } 40 printf("\n"); 41 printf("\n"); 42 QuickSort(arr, 0, 8);//傳入要排序數組,i的值和j的值。 43 printf("實現排序以後:"); 44 for(i = 0; i<9; i++) 45 { 46 printf("%d ",arr[i]); 47 } 48 printf("\n"); 49 return 0; 50 }
程序運行:數據結構
2、冒泡排序ui
1 #include <stdio.h> 2 void Sort(int arr[], int sz) 3 { 4 int i = 0; 5 int j = 0; 6 for(i=0; i<sz; i++)//判斷進行多少次比較 7 { 8 for(j=0; j<sz-i-1;j++)//判斷進行多少對比較 9 { 10 if(arr[j]>arr[j+1])//判斷大小進行交換 11 { 12 int tmp = arr[j]; 13 arr[j] = arr[j+1]; 14 arr[j+1] = tmp; 15 } 16 } 17 } 18 } 19 int main() 20 { 21 int i = 0; 22 int sz = 0; 23 int arr[9] = {1,6,9,3,2,8,4,5,7}; 24 sz = sizeof(arr)/sizeof(arr[1]); 25 printf("未進行排序以前:"); 26 for(i=0; i<9; i++) 27 { 28 printf("%d ",arr[i]); 29 } 30 printf("\n"); 31 Sort(arr, sz); 32 printf("進行排序以後:"); 33 for(i=0; i<9; i++) 34 { 35 printf("%d ",arr[i]); 36 } 37 printf("\n"); 38 return 0; 39 }
程序運行:spa