c++插入排序算法实现
插入排序
//插入排序C++实现,时间复杂度N2
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <Windows.h>
using namespace std;
int main()
{
DWORD start_time = GetTickCount64();//初始时间
cout << start_time << endl;
srand((int)time(0));//产生随机数种子 <ctime> 每次产生随机数不一样
int N = 20;
int A[20];//创建一个数组,含有20个元素
for (int i = 0; i < N; i++) //数组赋值
{
A[i] = rand() % 100; //rand假随机数,每次生成都一样,需要加上Srand <cstdlib>
cout << A[i] << ",";
}
cout << endl;
for (int i = 1; i < N; i++) // 插入排序 ,i=1默认左边第一个为排序好的一组,右边剩下的为待排序的组
{
int key = A[i]; //key为需要比较的手牌
int j = i - 1;//j为左边第一张
while (A[j] > key && j > -1) //比较,key手牌与排序好的一组最右边的牌开始比较
{
A[j + 1] = A[j]; //假如key小于最右,则将最右的拍往后移一位
j--; //再比较前一位,一直循环
}
A[j + 1] = key; //循环结束,key牌小于,将key牌插入
for (int i = 0; i < N; i++)
{
cout << A[i] << ",";
}
cout << endl;
}
DWORD end_time = GetTickCount64();//结束时间
cout << "The run time is : " << (end_time - start_time) << "ms!" << endl; //计算结束时间
}