设有一个序列a[0],a[1]...a[n];当中a[i-1]前是已经有序的,当插入时a[i]时,利用二分法搜索a[i]插入的位置 效率:O(N^2),对于初始基本有序的序列,效率上不如直接插入排序:对于随机无序的序列,效率比直接插入排序要高 /* * 二分(折半)插入排序 * 设有一个序列a[0],a[1]...a[n];当中a[i-1]前是已经有序的,当插入时a[i]时,利用二分法搜索a[i]插入的位置 */ public class BinaryInsertSort { public st
java排序算法(七):折半插入排序 折半插入排序法又称为二分插入排序法,是直接插入排序法的改良版本,也需要执行i-1趟插入.不同之处在于第i趟插入.先找出第i+1个元素应该插入的位置.假设前i个数据是已经处于有序状态 代码实现 package com.spring.test; /** * 折半插入排序 */ public class BinaryInsertSort { public static void main(String[] args) { int[] data = new int[
二分插入排序也称折半插入排序,基本思想是:设数列[0....n]分为两部分一部分是[0...i]为有序序列,另一部分是[i+1.....n]为无序序列,从无序序列中取一个数 x ,利用二分查找算法找到 x 在有序序列中的插入位置并插入,有序序列还是有序的,接下来重复上述步骤,直到无序序列全部插入有序序列 ,这是整个序列只剩下有序序列即有序了. 01 void BinaryInsertSort(int *pArray, int len) 02 { 03 //刚开始设有序序列只有一个元素 pA
数列有序! Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 2 Accepted Submission(s) : 1 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给
def insert_sort(old): for i in range(1, len(old)): for j in range(i, 0, -1): if(old[j] < old[j-1]): tmp = old[j] old[j] = old[j-1] old[j-1] = tmp # test case old = [2, 5, 3, 0, 2, 3, 0, 3] insert_sort(old) print old 插入排序的时间复杂度O(N^2)
目录 1. for版本--插入排序 2. while版本--插入排序 3. 测试用例 4. 算法时间复杂度分析 1. for版本--插入排序 def insert_sort_for(a_list): '''插入排序for版本''' num = len(a_list) for j in range(1,num): for i in range(j,0,-1): if a_list[i] < a_list[i-1]: a_list[i-1],a_list[i] = a_list[i],a_list[