插入排序算法研究
来源:互联网 发布:mysql数据库设置主键 编辑:程序博客网 时间:2024/06/01 23:27
闲来无事,研究并实现啦插入排序,使用伪代码描述如下:
InsertSort:
for i <-- 1 up to Size(array) - 1
key = array[i];
for j <-- i -1 down to 0
if j>0 and key < array[j]
array[j+1] = array[j];
array[j+1] = key
上述为代码为递增排序描述,其实递减排序描述差不读,只是将key < array[j]变成key > array[j]即可。对于代码实现的实现使用type来区分是递减还是递增排序。具体代码如下:
#include <stdio.h>typedef enum{ NON_DECREASE, NON_INCREASE}t_sort;void insert_sort(int *array, int n, t_sort type){ int i,j; int key; int move = 0; // record the times for(i = 1; i < n; i++) { key = array[i]; if(type == NON_DECREASE) { for(j = i - 1; j >= 0 && key < array[j]; j--,move++) array[j+1] = array[j]; } else { for(j = i - 1; j >= 0 && key > array[j]; j--,move++) array[j+1] = array[j]; } array[j+1] = key; } printf ("Move %d times in insert_sort\n", move);}void output_arry(int *array, int n){ int i; for(i = 0; i < n; i++) { printf ("%d ", array[i]); } printf ("\n");}intmain(void){ int array[] = {10,7,8,4,5,2,1,6,3,8}; printf ("The original data is: "); output_arry(array, sizeof(array)/sizeof(int)); insert_sort(array, sizeof(array)/sizeof(int), NON_DECREASE); //insert_sort(array, sizeof(array)/sizeof(int), NON_INCREASE); printf ("The sorted data is: "); output_arry(arry, sizeof(array)/sizeof(int)); return 0;}对于递增排序测试输出结果为:
The original data is: 10 7 8 4 5 2 1 6 3 8 Move 29 times in insert_sortThe sorted data is: 1 2 3 4 5 6 7 8 8 10对于递减排序测试输出结果为:
The original data is: 10 7 8 4 5 2 1 6 3 8 Move 15 times in insert_sortThe sorted data is: 10 8 8 7 6 5 4 3 2 1该算法最好情况下时间复杂度为O(n),最坏情况下时间复杂度为O(n^2)。
对于相同的元素,在排序后,其相对位置不会改变,属于稳定排序。
0 0
- 插入排序算法研究
- 算法研究之插入排序
- 插入排序之算法研究
- 算法研究之插入排序、冒泡排序
- 算法研究之插入排序、冒泡排序
- 排序算法-插入排序
- 排序算法--插入排序
- 排序算法---插入排序
- 排序算法-插入排序
- 排序算法-插入排序
- 排序算法--插入排序
- 排序算法-插入排序
- 排序算法-插入排序
- 排序算法---插入排序
- 排序算法--插入排序
- 排序算法--插入排序
- 排序算法--插入排序
- 排序算法-插入排序
- ScrollView嵌套使用GridView 两个都可以滚动
- SlidingMenu(侧滑菜单)
- SSH(一)——使用Maven创建Web项目
- OpenStack 能否会成为云计算的未来?
- HashMap遍历与按key排序。
- 插入排序算法研究
- 【转载】从一个男人身上看出他的修养和抱负
- 循环-01. 求整数段和(15)
- 关于file.encoding的设置
- Html与css
- 每日一道算法题:输出和为n的连续正整数序列
- Adb找不到设备不能调试
- Java Socket实战之六 使用NIO包实现Socket通信
- hdu1022-火车-栈的使用