插入排序

Posted 宣哲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入排序相关的知识,希望对你有一定的参考价值。

插入排序

插入排序就是一个数和一个已序的序列进行插入,组成新的已序序列

插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。

在其实现过程中使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序序列进行待插入位置查找,并进行移动。

插入排序的流程:

未优化代码:

第一层循环是循环有序序列。第二层循环是循环无序序列,无序序列的第一个依次和有序序列进行比较,再插入到合适的位置,如果无序序列待插入元素比有序序列元素大则跳出循环。

void insert_sort(int parr[], int n)

	for (int i = 1; i < n; ++i)	//保证循环次数
	
		for (int j = i - 1; j >= 0; --j)//保证比较次数
		
			if (arr[j] > arr[j+1]) 
			
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			
                        else		//如果待插入元素比有序序列的元素大则跳出循环
                          break;
		
	

优化代码示例:

优化主要思想:因为是数组,所以可以把交换换成赋值(覆盖)。同时满足2个条件就插入,否则就不进入循环

void insert_sort(int parr[], int len)	//插入排序

	int j,tempval;
	for (int i = 1; i < len; ++i)
	
		tempval = parr[i];	//保存待插入的值
		j = i - 1;
		while (j >= 0 && tempval < parr[j])	//待插入的值比有序序列值小
		
			parr[j + 1] = parr[j];	//将有序序列的值往后移
			--j;
		
		parr[j + 1] = tempval;	//将保存的值插入到有序序列中
	

以上是关于插入排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法 插入排序(直接插入排序半插入排序希尔排序)

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

算法插入排序——希尔排序+直接插入排序

第三篇,插入排序算法:直接插入排序希尔排序

❤️数据结构入门❤️(4 - 3)- 插入排序

java排序之插入排序(直接插入排序和希尔排序)