冒泡:ios
#include<iostream> #include<stdio.h> using namespace std; void sort(int* arr, int n) { int length; int i, j; int temp; length = n; for (i = 0; i < length; i++) { for (j = 0; j < length - 1; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int n; int i = 0; int arr[100]; cout << "輸入數組元素個數:" << endl; cin >> n; cout << "\n輸入數組:" << endl; for (i = 0; i < n; i++) { cin >> arr[i]; } cout << "\n輸入的數組爲:" << endl; for (i = 0; i < n; i++) { cout << arr[i] << " , "; } sort(arr, n); cout << "\n冒泡結果爲:" << endl; for (i = 0; i < n; i++) { cout << arr[i] << " , "; } }
快排:數組
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; int quicksort(int *arr, int left, int right) { int mid; mid = arr[left]; while (left < right) { //從右邊開始 while(left<right && arr[right]>mid) right--; arr[left] = arr[right]; while(left < right && arr[left] < mid) left++; arr[right] = arr[left]; } //此時left等於right arr[left] = mid; return left; } void sort(int *arr, int left, int right) { int pivot; pivot = arr[left]; if (left < right) { pivot = quicksort(arr, left, right); //選出支點 sort(arr, left, pivot - 1); //負責支點左邊的快排 sort(arr, pivot + 1, right); //負責支點右邊的快排 }
//等到全部排序的left=right了,就會跳出 } int main() { int n; int i = 0; int arr[100]; cout << "輸入數組元素個數:" << endl; cin >> n; cout << "\n輸入數組:" << endl; for (i = 0; i < n; i++) { cin >> arr[i]; } cout << "\n輸入的數組爲:" << endl; for (i = 0; i < n; i++) { cout << arr[i] << " , "; } sort(arr, 0, n - 1); cout << "快排結果爲:" << endl; for (i = 0; i < n; i++) { cout << arr[i] << " , "; } }