首页 > 代码库 > 算法精解(一)——插入排序
算法精解(一)——插入排序
<pre name="code" class="cpp"><span style="background-color: rgb(255, 255, 255);">// 插入排序 // // O(n^2),在递增序列插入1个元素时,O(n) #include "sort.h" void issort(void *data, int size, int esize, int (*compare)(const void *key1, const void *key2)) { int i, j; int *a =(int *)data; int *key; // 为key申请空间 if ((key = (int *)malloc(sizeof(char))) != NULL) { return; } // 初始化j j = 1; while(j <= size) // j为待排序的元素, 一步一步向右移动 { // key作为缓存 memcpy(key, &a[j], sizeof(int)); i = j - 1; // i从j的左边一个位置开始 while(i <= j) { if(compare(key, &a[i]) < 0) //a[j] < a[i] { memcpy(&a[i + 1], &a[i], sizeof(int)); // 整个数组向右移动一个位置 i--; } } // 插入a[j]正确的位置 memcpy(&a[i + 1], key, sizeof(int)); j++; } free(key); return; } </span>
算法精解(一)——插入排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。