插入排序的优化,比较插入同步进行

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据,从而得到一个新的、个数加一的有序数据
    算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。

网上找到的程序多是先比较找到插入的位置,再移动位置。还有文章说将查找位置的过程用二分法进行优化,其实根本没用,可以将比较插入同步进行,比较查找的同时移动位置,效率高得多。

经测试,5000个随机数,本法比传统方法快3倍,难以置信。

 1 Sub InsertSortN(LngArr() As Long, _
 2         Optional LB As Long, Optional UB As Long = -9, Optional Descending As Long)
 3     Dim i As Long, j As Long, k As Long
 4     Dim Tmp As Long, Ltmp As Long
 5
 6     If UB = -9 Then UB = UBound(LngArr):   LB = LBound(LngArr)
 7
 8     For i = 1 To UB
 9         Tmp = LngArr(i):
10         For j = i - 1 To 0 Step -1                           ‘     比较插入数字和挪位一起进行
11             If (Descending = 0 And Tmp >= LngArr(j)) Or (Descending = 1 And Tmp <= LngArr(j)) Then Exit For
12             LngArr(j + 1) = LngArr(j):
13         Next j
14         LngArr(j + 1) = Tmp:
15     Next i
16 End Sub
时间: 2024-08-12 13:11:25

插入排序的优化,比较插入同步进行的相关文章

插入排序的优化【不靠谱地讲可以优化到O(nlogn)】 USACO 丑数

首先我们先介绍一下普通的插排,就是我们现在一般写的那种,效率是O(n^2)的. 普通的插排基于的思想就是找位置,然后插入进去,其他在它后面的元素全部后移,下面是普通插排的代码: 1 #include<iostream> 2 #include<fstream> 3 #include<stdio.h> 4 using namespace std; 5 int a[200000]; 6 int p[200000]; 7 8 int main(){ 9 ios::sync_wi

Hibernate批处理操作优化 (批量插入、更新与删除)

问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载降低. 工作所需,我经常要写些程序批量处理数据,每次执行几十万数据处理的时候,我机子的CPU都会飙高,而且数据处理速度会越来越慢.比如第一个1W条要5分钟,第二个1W条就要10分钟,要干其他事情的时候机子也卡的不行,只能等着处理完数据. 其实我一直认为是数据量太大,从来不认为是程序问题,所以一直没怎么关注过.

MySQL优化之——插入 更新 删除

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46581769 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (column_list2) FROM table_name2 WHERE (condition) table_name1指定待插入数据的表:column_list1指定待插入表中要插入数据的哪些列:table_name2指定插入数据是从

mybatis优化批量插入数据

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />//配置此项10000条简单插入性能提高4-5倍 <construct

图解算法系列之插入排序(优化版)

(1)算法描述 对于给定的一个线性空间,遍历考察每一个元素,将当前元素拷贝一份,并将前一个元素拷贝到当前元素的原位置.拷贝出来的元素与前一个元素进行比较,如果满足前一个元素大于或小于当前元素就将当前拷贝出来的元素放到当前位置,否则继续向前比较. (2)图解算法 (3)C/C++代码实现 Custom.h void insertionAdvancedSort(int arr[], int number); Custom.cpp void insertionAdvancedSort(int arr[

MySQL批量SQL插入各种性能优化

对于一些数据量较大的系统.数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此.优化数据库插入性能是非常有意义的. 经过对MySQL innodb的一些性能測试,发现一些能够提高insert效率的方法.供大家參考參考. 1.一条SQL语句插入多条数据. 经常使用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) V

MySQL批量SQL插入性能优化

对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的.经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考. 1. 一条SQL语句插入多条数据.常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUE

mysql 批量插入数据 优化

对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. 经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考. 1. 一条SQL语句插入多条数据. 常用的插入语句如: MySQL 1 2 3 4 INSERT INTO `insert_table` (`datetime`, `uid`, `content

MySQL批量SQL插入性能优化详解

对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的.经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考.1. 一条SQL语句插入多条数据.常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES