1.1插入排序-简单(直接)插入排序
来源:互联网 发布:单片机用什么编程 编辑:程序博客网 时间:2024/06/05 23:44
1.1插入排序-简单(直接)插入排序
/* Straight Insertion Sort*/
一.评估
稳定的排序算法
时间复杂度O(n^2)
移动次数 最小值n-1,最大值(n+2)(n-1)/2,平均值(n^2)/4。
二.思想
逐一插入,由尾向前逐一比较。
r[0]作用:哨兵(监视哨)、暂存器。
void InsertSort(int *r){int i,j;for(i = 2;i <= N;i ++){r[0] = r[i];//r[0]为哨兵、暂存器for(j = i-1; r[0] < r[j]; j --){r[j+1] = r[j];}r[j+1] = r[0];}}
三.示例
/* Straight Insertion Sort*/
//Copyright @wangwei14309 All rights reservd# include <stdio.h>void creat(int *r);void InsertSort(int *r);void print(int *r);int N;int main(){int a[50];creat(a);InsertSort(a);print(a);}void creat(int *r){int i;printf("sort how many numbers :");scanf("%d",&N);printf("input %d numbers :",N);for(i = 1;i <= N;i ++){scanf("%d",&r[i]);}}void InsertSort(int *r){int i,j;for(i = 2;i <= N;i ++){r[0] = r[i];//r[0]为哨兵、暂存器for(j = i-1; r[0] < r[j]; j --){r[j+1] = r[j];}r[j+1] = r[0];}}void print(int *r){int i;printf("the result is :");for(i = 1; i <= N; \i ++)printf("%d ",r[i]);printf("\n");}
0 0
- 1.1插入排序-简单(直接)插入排序
- 简单排序算法:直接插入排序(插入排序)
- 简单排序:直接插入排序
- 简单算法(直接插入排序)
- 简单排序(冒泡,选择,直接插入)
- 简单的直接插入排序
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序(直接插入排序)
- 插入排序一(直接插入排序)
- 算法---插入排序(直接插入排序)
- 插入排序(希尔排序、直接插入、折半插入排序)
- 数据结构-插入排序(直接插入排序+折半插入排序)
- 简单排序:冒泡排序、直接插入排序、直接选择排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- 【插入排序】直接插入排序
- 关于面向对象中接口和抽象类的一个比喻
- 一个合格的程序员的编程方式
- hdu 5032 Always Cook Mushroom 离线树状数组
- [Android] 使用Include布局+Fragment滑动切换屏幕
- ESC32硬件---PCB小结(第一版)
- 1.1插入排序-简单(直接)插入排序
- base64加密算法的java实现
- 我的uboot之路(1)从spec开始
- 黑马程序员----C语言入门及终端指令
- 初识结构体与指针
- Android UI线程和子线程共享数据
- Windows分页管理机制的学习(一)实践2
- 有一种蓝叫 APEC 蓝
- XML简介