插入排序

sql server 2012插入排序后的数据到临时表无效

ε祈祈猫儿з 提交于 2019-12-02 05:33:15
IF OBJECT_ID('TEMPDB..#list') IS NOT NULL BEGIN DROP TABLE TEMPDB.#list END CREATE TABLE #list(OFC_ID VARCHAR(40), MyNo VARCHAR(64), RowNumber INT, Flag INT) TRUNCATE TABLE TEMPDB.#list -- 使用ROW_NUMBER插入后有是序的(ROW_NUMBER也可用于分页) INSERT INTO #list(OFC_ID,MyNo,RowNumber,Flag ) SELECT OFC_ID,MyNo, ROW_NUMBER() OVER ( ORDER BY OFC_ID,MyNo ) AS RowNumber ,1 FROM ( SELECT '7976B0A917A948A68A7595A907247064' AS OFC_ID, 'WHT19102401-001' AS MyNo UNION ALL SELECT '01AEF3AECD694E56967A0EECCE20FEAA' AS OFC_ID, 'WHT19102402-001' AS MyNo UNION ALL SELECT '01AEF3AECD694E56967A0EECCE20FEAA' AS OFC_ID,

插入排序

萝らか妹 提交于 2019-12-02 00:16:32
include using namespace std; //Function prototype int* selectSort(int ,int); void showArray(const int [],int); int main() { int array[] = {7,2,11,5,9,10}; int size = sizeof(array)/sizeof(array[0]); showArray(array,size); selectSort(array,size); showArray(array, size); cout <<array<< endl; return 0; } int selectSort(int p,int size) { for (int i=1;i<size;i++) { int t = (p + i); int j; for (j = i-1;j>=0&&t< (p+j);j--) { (p + j+1) = (p+j); } (p + j + 1) = t; } return p; } void showArray(const int array[], int size) { for (int count=0;count<size;count++) { cout << array[count] <<" "; } cout << endl

排序算法之折半插入排序

﹥>﹥吖頭↗ 提交于 2019-12-01 18:42:09
1 、介绍。 将直接插入排序中寻找 A[i] 的插入位置的方法改为采用折半比较,即可得到折半插入排序算法。在处理 A[i] 时, A[0] …… A[i-1] 已经按关键码值排好序。所谓折半比较,就是在插入 A[i] 时,取 A[i-1/2] 的关键码值与 A[i] 的关键码值进行比较,如果 A[i] 的关键码值小于 A[i-1/2] 的关键码值,则说明 A[i] 只能插入 A[0] 到 A[i-1/2] 之间,故可以在 A[0] 到 A[i-1/2-1] 之间继续使用折半比较;否则只能插入 A[i-1/2] 到 A[i-1] 之间,故可以在 A[i-1/2+1] 到 A[i-1] 之间继续使用折半比较。如此担负,直到最后能够确定插入的位置为止。一般在 A[k] 和 A[r] 之间采用折半,其中间结点为 A[k+r/2] ,经过一次比较即可排除一半记录,把可能插入的区间减小了一半,故称为折半。执行折半插入排序的前提是文件记录必须按顺序存储。 折半插入排序是稳定排序,不需要额外内存,空间复杂度 O(1) 。时间复杂度,最佳情况: O(n^2) 最差情况: O(n^2) 平均情况: O(n^2) 。 2 、步骤。 跟直接插入排序的步骤相似,只不过查找插入点的方法不一样。直接插入排序是从有序区的最后一个数依次向前找,而折半插入排序是通过折半的方式进行查找。 (1) 计算 0 ~ i-1

排序算法(一)

倖福魔咒の 提交于 2019-12-01 17:14:44
01插入排序insertion sort:每次选择一个元素,并且将这个元素和数组中的所有元素进行比较,然后插入到合适的位置。 02希尔排序shell sort:插入排序的进阶版。根据步长由长到短分组,进行排序,直到步长为1为止。 03基数排序radix sort:将整数按位数切割成不同的数字,然后按每个位数分别比较。 04冒泡排序bubble sort:每次选择两个元素,按照需求进行交换(比如需要升序排列的话,把较大的元素放在靠后一些的位置),循环 n 次(n 为总元素个数)。 来源: https://www.cnblogs.com/laixiaobin/p/11695322.html

冒泡排序,插入排序,选择排序

感情迁移 提交于 2019-12-01 15:51:00
""" 遍历数组 交换旗帜变量 = 假 (False) 从 i = 1 到 最后一个没有排序过元素的指数 如果 左边元素 > 右边元素 交换(左边元素,右边元素) 交换旗帜变量 = 真(True) """ def bubble_sort(arr): for i in range(len(arr)): flag = False for j in range(len(arr)-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] flag = True # 如果没有数据交换则表示已经有序,退出循环 if not flag: break return arr """ 将第一个元素标记为已排序 遍历每个没有排序过的元素 “提取” 元素 X i = 最后排序过元素的指数 到 0 的遍历 如果现在排序过的元素 > 提取的元素 将排序过的元素向右移一格 否则:break 插入提取的元素 """ def insert_sort(arr): if len(arr) <= 1: return arr # 遍历每个未排序元素 for i in range(1, len(arr)): val = arr[i] j = i - 1 while j >= 0: if arr[j] > val: arr[j + 1] = arr[j]

排序算法-插入排序

不羁岁月 提交于 2019-12-01 13:51:08
一、排序算法原理   将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。那么也就是说,每次插入一个数都要对原来排序好的那部分序列进行重新的排序。 二、时间复杂度(n 2 )    1 + 2 + 3 + (n-1) = (n 2 -n)/2 三、代码实现   3.1 利用for循环实现 1 from Common.CreateData import createData 2 from Common.Swap import swap 3 4 5 def insertionSort(lyst): 6 for i in range(1, len(lyst)): 7 for j in range(i, 0, -1): 8 if lyst[j] < lyst[j - 1]: 9 # 数据交换,和swap(lyst, j, j - 1) 等价 10 lyst[j], lyst[j - 1] = lyst[j - 1], lyst[j] 11 print(lyst) 12 13 14 insertionSort(createData())   3.2 利用while实现    1 from Common.CreateData import createData 2 3 4 def insertSort(lyst): 5 i = 1 6

插入排序

和自甴很熟 提交于 2019-12-01 12:17:38
def insert_sort(li): for i in range(1,len(li)): # i表示摸到的牌的位置 tmp = li[i] j = i - 1 # j是当前手里用来比较的牌 while True: if j >= 0 and li[j] > tmp: # 如果j合法并且这张牌比摸到的牌大 li[j+1] = li[j] # 往后看 j -= 1 #往前看 else: #如果手里用来比较的牌比摸到的牌小或者或者j==-1 li[j+1] = tmp # 放牌 break def insert_sort_2(li): for i in range(1,len(li)): # i表示摸到的牌的位置 tmp = li[i] j = i - 1 # j是当前手里用来比较的牌 while j >= 0 and li[j] > tmp: # 如果j合法并且这张牌比摸到的牌大 li[j+1] = li[j] # 往后看 j -= 1 # 往前看 li[j+1] = tmp # 放牌 来源: https://www.cnblogs.com/chongdongxiaoyu/p/11685129.html

【初赛】

荒凉一梦 提交于 2019-12-01 07:48:27
计算机? 1944年,美籍匈牙利数学家 冯 诺依曼 提出计算机基本结构和工作方式的设想 为计算机的诞生和发展提供了理论基础 微型机主要技术指标: 字长:一直计算机能够直接处理的二进制数据的基础位数 单位为位(BIT) 主频:计算机主时钟在一秒内发出的脉冲数 很大程度上决定了计算机的运算速度 内存容量:表示计算机处理信息能力强弱的一项技术指标 单位为字节(BYTE 外存容量:一般指软盘、硬盘、光盘 计算机的特点:运算速度快 运算精度高 有记忆能力 逻辑判断能力 自动控制能力 计算机硬件由五大部分组成:运算器、控制器、存储器、输入设备、输出设备 中央处理器(CPU):由 运算器、控制器和一些寄存器 组成 ​ 运算器 进行各种 算术运算和逻辑运算 ; 控制器 是计算机的指挥系统 CPU的主要性能指标是主频和字长 存储器: ​ 内部存储器:中央处理器能直接访问的存储器称为 内部存储器 ,包括 快速缓冲存储器和主存储器 ;中央处理器不能直接访问的存储器称为 外部存储器 ,外部存储器中的信息必须调入内存后才能为中央处理器处理。 ​ 主存储器 :内存也常泛称主存,但严格上说,只有当内存中只有主存,而没有快速缓冲存储器时,才能称为主存。主存储器按读写功能,可分只读 存储器(ROM) 和随机存储器 (RAM) 两种。 ​ 外部存储器: ​ 外存储器:也称辅助存储器,一般容量较大,速度比主存较慢 ​

经典排序算法——插入排序

只谈情不闲聊 提交于 2019-12-01 07:28:46
插入排序原理 插入的排序的原理是每趟将一个数按照大小插入到它前面已经排好序的子序列中。依次重复,直到插入全部数字。 图解插入排序原理(升序为例) 以数组[3,4,1,2]为例,升序排列数组。 第一趟从第2个数据开始(第1个数字自己已经有序),跟前面一个数字比较,如果小于前面数字就将前面数字后移,并继续向前比较,直到下标小于0为止。如下图所示 第二个数字4,插入到它前面的有序子序列(3)中,由于4>3所以直接插在3后面即无需移动。第一趟结束。指针i向后移,如下图所示 第三个数字1,插入到它前面的有序子序列(3,4)中,由于1<4所以将4后移一位(数字1会先保存起来,不必担心被覆盖),然后再让1与3比较,1<3,所以3后移一位。子序列遍历完后,将数字1放入插入位置。接着i指针后移,如下图所示 经过3趟比较后,数组中的数字已经排好顺序。下面看下具体代码 1 public static void sort(int[] array){ 2 for (int i = 1; i <array.length ; i++) { 3 int insertValue = array[i]; 4 int insertIndex = i -1 ; 5 while (insertIndex >= 0 && insertValue < array[insertIndex]){ 6 /