演算法學習--7.2插入排序
阿新 • • 發佈:2018-12-01
模擬撲克牌的排序:最壞O(N^2),最好O(N)
#include <iostream> using namespace std; template<typename T> int length(T& arr) { return sizeof(arr) / sizeof(arr[0]); } void InsertSort(int arr[], int n); void Print(int arr[], int n); int main() { int arr[6] = { -3,-5,3,6,2,3 }; int n = length(arr); InsertSort(arr, n); Print(arr, n); system("pause"); return 0; } void InsertSort(int arr[], int n) { for (int i = 1; i < n; i++)//手裡有張牌arr[0],摸下一張arr[1]。。。 { int j = 0; int tmp = arr[i];//新牌tmp for (j = i; j > 0 && arr[j - 1] > tmp; j--)//新牌<舊牌 { arr[j] = arr[j - 1];//移出arr[j-1]空位 } arr[j] = tmp;//新牌落位 } } void Print(int arr[], int n) { for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout << endl; }