1. 程式人生 > >演算法學習--7.2插入排序

演算法學習--7.2插入排序

模擬撲克牌的排序:最壞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;
}