博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入排序
阅读量:2504 次
发布时间:2019-05-11

本文共 1448 字,大约阅读时间需要 4 分钟。

排序思想:

假设目标是从小到大。在一列无序的队伍中,从第一值开始,始终让它左边的值是从小到大排序的,其右边的值暂时不变,直到最后一个值。

比如一共10值,当遍历到第5个值时,要保证前4个值是排序的,而且第5个值遍历完之后要将第5个值插入到前4个值里。直到第10个值。

需要两层循环,第一层循环用来保证遍历的次数,也就是元素的个数-1,第二层循环用来使左边的值排序。

第一次遍历从第二个值开始,让第一个值和第二个值从小到大。

第二次遍历从第三个值开始,让前三个值从小到大排。
。。。
其实每一次遍历是从第n个值向左逐个交换位置。

如下图所示:

代码如下:

// Defines the entry point for the console application.//#include "stdafx.h"#include "windows.h"#include "time.h"const int N = 100000;int O = 0;int* GenRandom(){	srand( (unsigned)time( NULL ) );	int* a = new int[N];	for (int i = 0; i < N; i++)	{		a[i] = rand() * rand();	}	return a;}void swap(int& a, int& b){	int temp = 0;	temp = a;	a = b;	b = temp;}//small -> largevoid InsertSort(int* ua){	O = 0;	//round times	for (int i = 1; i <= N; i++)	{		//printf("round %d \r\n", i);		//for (int i = 0; i < N; i++)		//{		//	printf("a[%d]=%d \r\n",i, *(ua+i));		//}		for (int j = i; j > 0; j--)		{			if( ua[j] < ua[j-1] )			{				swap(ua[j], ua[j-1] );			}			O++;		}	}}SYSTEMTIME StartTime = {0};FILETIME StartFileTime = {0};SYSTEMTIME EndTime= {0};FILETIME SEndFileTime= {0};int _tmain(int argc, _TCHAR* argv[]){        int* a = GenRandom(); 	///InsertSort	GetSystemTime(&StartTime);	printf("timeBefore %d:%d:%d \r\n", StartTime.wMinute, StartTime.wSecond, StartTime.wMilliseconds);	printf("InsertSort \r\n");	InsertSort(a);	GetSystemTime(&EndTime);	printf("timeAfter %d:%d:%d \r\n", EndTime.wMinute, EndTime.wSecond, EndTime.wMilliseconds);	printf("times %d \r\n", O);	return 0;}

转载地址:http://fmlgb.baihongyu.com/

你可能感兴趣的文章
算法技巧之打表
查看>>
nodejs创建服务器
查看>>
安卓 图片加载框架ImageLoader
查看>>
ApplicationBar
查看>>
Spring Boot Docker 实战
查看>>
Div Vertical Menu ver3
查看>>
Git简明操作
查看>>
InnoDB为什么要使用auto_Increment
查看>>
课堂练习之买书打折最便宜
查看>>
定义函数
查看>>
网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
查看>>
MQTT协议笔记之mqtt.io项目HTTP协议支持
查看>>
(转)jQuery中append(),prepend()与after(),before()的区别
查看>>
Tecplot: Legend和图像中 Dashed/Dash dot/Long dash 等虚线显示没有区别的问题
查看>>
Python读取mysql数据,转为DataFrame格式并根据原TABLE中的COLUMNS指定columns,index
查看>>
简单版用户登录
查看>>
hdu 1250(大整数)
查看>>
hdu 1518(DFS+剪枝)
查看>>
win8 开发之旅(2) --连连看游戏开发 项目错误的总结
查看>>
视频转换工具ffmpeg
查看>>