插入排序之算法研究

插入排序:有n个数,第i个数前面都是有序的话,那么i插入到排好的系列中就非常简单,和前面的数一一比较就ok了,对于一个序列,那么从第二个数开始和前面数比较,排好前面2个数之后来把第三个数插入到前面2个数中就非常简单了,第四个数亦是如此,以此类推.....................

#include<iostream>
#include<vector>
using namespace std;

//void insert_sort(vector<int> &a)
//{
//	int temp;
//	size_t n = a.size();
//	for ( int i= 1; i < n; i++)
//	{
//		for (int j = i - 1; j >= 0 && a[j]>a[j + 1]; j--)
//		{
//			temp = a[j];
//			a[j] = a[j + 1];
//			a[j+ 1] = temp;
//		}
//	}
//}

void insert_sort2(vector<int> &a)
{
	int temp;
	size_t n = a.size();
	for (int i = 1; i < n; i++)
	{
		for (int j = i - 1; j >= 0; j--)
		{
			if (a[j]>a[j + 1])
			{
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
}

int main()
{
	vector<int> a = { 5,9, 77, 56, 6, 8, 1, 5,100 };
	insert_sort2(a);
	for (const auto i : a)
		cout << i << " " << endl;

	return 0;
}

插入排序:有n个数,第i个数前面都是有序的话,那么i插入到排好的系列中就非常简单,和前面的数一一比较就ok了,对于一个序列,那么从第二个数开始和前面数比较,排好前面2个数之后来把第三个数插入到前面2个数中就非常简单了,第四个数亦是如此,以此类推.....................

时间: 2024-08-11 07:40:06

插入排序之算法研究的相关文章

基本算法研究1-冒泡排序算法测试

基本算法研究1-冒泡排序算法测试 1.经典冒泡排序法基本原理 先看一个动态图,感觉比较形象: 冒泡排序(Bubble Sort)是一种简单的排序算法.默认是从小到大排序,即把最大的数据排在最后,相当于每次把最大数据像气泡一样浮到水面一样.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换. 基本步骤: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个.        2.对每一对相邻元素作同样的工作,从开始第一对

HTML5游戏开发-扫雷及其算法研究

吕蒙曰:士隔三月[1],当刮目相看.所以,在下在这三月中发奋图强,花了约莫8节信息课的时间研究扫雷.呜呼,由于在下才能尚且不足,所以也就只能勉强打过中级难度的吧.不过,一边玩的同时,我还一边对扫雷这个游戏的制做方法构思了一下.所以说,本文中的算法完全是凭借自己对扫雷游戏规则的总结而自行研发出来的,倘若和MS的扫雷玩法有些出入,还望各位看官见谅. [1]出自<孙权劝学>,原文为"士别三日",由于在下这三个月来都不曾发表博客,所以引申到"士隔三月",各位看官

Supervised Descent Method Face Alignment 代码下载 和 算法研究 之一

1 主要内容: Supervised Descent Method and its Applications to Face Alignment算法研究. 2代码彩蛋:我问了好久,xxiong好心人发给我的,希望能对你们学习有帮助: 低调下载: http://humansensing.cs.cmu.edu/xxiong/mexintraface1.3.1%28release%29.zip. 注意杜绝一切商业用途,如果需要商业用途,请联系作者本人!! 3本文分为几个部分: (1)解决什么问题 (2

通用高校排课算法研究----3.基于时间片优先级排课算法

通用高校排课算法研究----3.基于时间片优先级排课算法 3   基于时间片优先级排课算法描述与分析 排课问题实质上是时间.教师.班级.教室.课程这五维关系的冲突问题,要合理的解决这个问题首先要了解排课中的一些基本原则以及排课的一些基本要求. 3.1排课中的基本原则 在课程的编排中应遵循一定的规则, 只有按照基本规则来进行课程的编排才能够减少冲突的发生, 这些基本规则主要有以下几条: 1) 同一班级的学生在同一时间(某些特定的选修课时间除外) 不能安排两门课程 2) 同一教师在同一时间不能安排两

程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦

程序员面试.算法研究.编程艺术.红黑树.数据挖掘5大系列集锦

基础典型算法研究:合并有序数组

做leetcode第二题的时候,发现合并有序数组是一个很有意思的问题,于是,总结如下,部分内容来源于网络各位大神. 第一种方法: 合并调用sort. 即是将两个数组合并在一个数组里面,然后对合并后的数组调用sort函数即可. class Solution: def getArray(self, A, B) : for item in B : A.append(item) A.sort() 第二种方法: 极值插入法. #include <stdio.h> void insert(int *arr

NLTK学习笔记(四):自然语言处理的一些算法研究

自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结的自然语言中常用的一些基本算法,算是入个门了. 递归 使用递归速度上会受影响,但是便于理解算法深层嵌套对象.而一些函数式编程语言会将尾递归优化为迭代. 如果要计算n个词有多少种组合方式?按照阶乘定义:n! = n*(n-1)*...*1 def func(wordlist): length = le

图像连通域标记算法研究

把之前一篇记录过的日志贴过来 图像连通域标记算法研究 ConnectedComponent Labeling 最近在研究一篇复杂下背景文字检测的论文. “Detecting Text in Natural Scenes with Stroke Width Transform ” CPVR 2010的文章,它主要探讨利用文字内部笔画宽度一致作为主要线索来检测文字的一个新奇的算法,当然,我不是想讨论文字检测,论文算法实施的过程中有一步涉及到图像连通域标记算法,在这里我遇到了一些问题,查阅了一些相关文

力导向算法研究

一.背景 1963年, Tutte提出的质心法被公认为是第一个事实上的力导向算法.1984年, Eades提出了一种电荷弹簧模型, 以带电环代替图的顶点,  弹簧代替图的边,  尝试用物理方法画图, 从而开拓了力导向算法的新思路.该算法首先为图中各顶点赋予随机的初始位置, 然后系统在电荷之间的斥力和弹簧的弹力作用下, 不停地运动,  直至达到稳定平衡的状态. 其中力导向算法是属于信息可视化范畴内的一种经典算法.而可视化发展的三个方向: 科学可视化.信息可视化和可视分析.其中图的布局策略往往决定了