模拟扑克牌的排序:最坏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;
}