[cpp] // 經典冒泡排序 void BubbleSort(int arr[], int n) { int i = 0, j =0; for(i = 0; i < n; i++) for(j = 0; j < n - 1 - i; j++) { if(arr[j] > arr[j + 1]) { arr[j] = arr[j] ^ arr[j+1]; arr[j+1] = arr[j] ^ arr[j+1]; arr[j] = arr[j] ^ arr[j+1]; } } } 交換兩個數據,可以用用臨時變量,也可用以下的兩個方法 a = a^b; b = a^b; a = a^b; 或者 a = a + b; b = a - b; a = a - b; [cpp] // 選擇排序 void SelectSort(int arr[], int n) { int i, j; int min; for(i = 0; i < n - 1; i++) { int index = 0; min = arr[i]; for(j = i + 1; j < n; j++) //找出 i+1 - n 無序區的最小者與arr[i]交換 { if(arr[j] < min) { min = arr[j]; index = j; } } if(index != 0) //表明無序區有比arr[i]小的元素 { arr[i] = arr[i]^arr[index]; arr[index] = arr[i]^arr[index]; arr[i] = arr[i]^arr[index]; } } } 感覺比冒泡法好多啦 [cpp] //快速排序算法 void QuickSort(int arr[], int n) { int i =0 , j = n - 1; int key = arr[0]; int index = 0; if(n <= 1) return; while(i < j) { // 從後向前搜索 while(j > i && arr[j] > key) j--; if(j == i) break; else { arr[i++] = arr[j]; index = j; } // 從前向後搜索 while(i < j && arr[i] <key) i++; if(i == j) break; else { arr[j--] = arr[i]; index = i; } } QuickSort(arr, index); QuickSort(arr + index + 1, n - 1 - index); }