C++插入排序

C++插入排序

#include <iostream>

#include <sys\timeb.h>
#include <time.h>

using namespace std;

#define MAX 10000


//插入排序:1、先把数组第一个元素当成有序序列
//          2、从第二个元素开始,元素和当前元素的上一个元素进行比较,符合条件则交换
//          3、一直匹配到比当前元素小的之后(看是从大到小或者从小到大)
void InsertSortArr(int arr[],int length) {
	int i = 0;
	int j = 0;
	for (i = 1; i < length; i++)//从第二个元素开始
	{                

		if (arr[i]<arr[i-1])
		{
			int temp = arr[i];
			for (j = i - 1 ; j >= 0 && temp < arr[j]; --j)//往当前元素的前面对比,直到比当前元素小
			{
				arr[j + 1] = arr[j];//满足条件则后移
			}
			arr[j + 1] = temp;//在比当前元素小的元素的下一个位置插入
		}
		
	}
}

void PrintArr(int arr[], int length) {
	for (int i = 0; i < length; i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
}

long GetTime() {
	timeb t;
	ftime(&t);
	return t.time * 1000 + t.millitm;
}

int main() {

	srand((unsigned int)time(NULL));
	int arr[MAX];

	for (int i = 0; i < MAX; i++)
	{
		arr[i] = rand() % MAX;
	}
	
	long after = GetTime();
	InsertSortArr(arr, MAX);
	long before = GetTime();
	//PrintArr(arr, MAX);
	cout << "插入排序" << MAX << "次,耗时:" << before - after << "毫秒"<<endl; 
   
	return 0;
}

效果图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44567289/article/details/94960163
今日推荐