直接插入排序

直接插入排序

旧时模样 提交于 2019-11-28 18:55:33
目录 插入排序 一、直接插入排序 1、原理 2、排序思想 3、代码实现 4、总结 插入排序 标签(空格分隔): python-排序算法 一、直接插入排序 1、原理 再末排序序列中,构建一个子排序序列,知道全部数据排序完成; 再待排序的数,插入到 已经排序 的序列中合适的位置 增加一个 哨兵 ,放入待比较值,让它和后面已经排好序的序列比较,找到合适的插入位置 2、排序思想 1、增加一个哨兵位,每轮比较将待比较数放入 2、哨兵一次和待比较数的前一个数据比较,大数靠右移动,找到哨兵中值的插入位置 3、每一轮结束后,得到一个从开始到带比较数位置的一个有序序列 3、代码实现 lst = [7, 9, 2, 5, 3, 1] # 直接插入排序 - 升序排列 newlst = lst[:] # 原样拷贝一份数据 newlst = [0] + newlst # 增加一个哨兵位 length = len(newlst) for i in range(2, length): newlst[0] = newlst[i] # 确定排序数据的有序区 j = i-1 if newlst[j] > newlst[0]: # 此处可以控制不会越界 while newlst[j] > newlst[0]: newlst[j+1] = newlst[j] print("----", newlst) j -= 1

排序---直接插入排序

自古美人都是妖i 提交于 2019-11-28 11:08:40
直接插入排序的算法的时间复杂度为O(n^2),算法比较稳定 算法稳定的原因:直接插入排序是将每一个数字进行插入排序,不会出现问题 void InsertSort(int *src, int n)//直接插入排序(数组足够小时最优,数组越有序插排越快)(稳定) { int i, j; int tmp; for (i = 1; i < n; i++) { tmp = src[i]; for (j = i; j>0 && src[j - 1]>tmp; j--) { src[j] = src[j - 1]; } src[j] = tmp; } } 来源: https://blog.csdn.net/qq_44783220/article/details/100053512

排序算法之插入排序(直接插入方式)

試著忘記壹切 提交于 2019-11-27 20:56:45
插入排序基本思想:   插入排序,就是把一组乱序的数据,依次拿出一个,放入到一组已经排好序的数据中的正确的位置。又可以分为:①直接插入排序、②折半插入排序、③二路插入排序、④表插入排序、⑤希尔排序 一、 直接插入排序   1.基本思想:相对比较简单的一种排序方法,就是按照概念一步一步的操作,可以使用for循环实现         假设按照从小到大的顺序排序(1)从第二个数据(下标为1的数据)开始,一直到最后一个数据结束,每次取出一个数据。(2)比较第一步的数据和它前一个位置的数据,如果大于前一个位置的数据, 则交换两者。再开始和前面的数据依次比较,并和比它大的数据进行交换,因为前面的数据已经有序,则找到第一个比它小的数据后就退出。 2.直接插入排序过程: 3.java代码: public int[] insertionSort(int[] array){ for(int i = 0;i < array.length - 1;i++){ for(int j = i + 1; j > 0;j--){ if(array[j] < array[j - 1]){ array[j] = array[j] ^ array[j - 1]; array[j - 1] = array[j] ^ array[j -1]; array[j] = array[j] ^ array[j - 1]; }else