博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入排序
阅读量:5253 次
发布时间:2019-06-14

本文共 752 字,大约阅读时间需要 2 分钟。

插入排序原理很简单,讲一组数据分成两组,我分别将其称为有序组与待插入组。每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。直到待插入组元素个数为0。当然,插入过程中涉及到了元素的移动。

为了排序方便,我们一般将数据第一个元素视为有序组,其他均为待插入组。

插入排序算法分析

插入排序算法有种递归的思想在里面,它由N-1趟排序组成。初始时,只考虑数组下标0处的元素,只有一个元素,显然是有序的。

然后第一趟 对下标 1 处的元素进行排序,保证数组[0,1]上的元素有序;

  第二趟 对下标 2 处的元素进行排序,保证数组[0,2]上的元素有序;

.....

.....

第N-1趟对下标 N-1 处的元素进行排序,保证数组[0,N-1]上的元素有序,也就是整个数组有序了。

它的递归思想就体现在:当对位置 i 处的元素进行排序时,[0,i-1]上的元素一定是已经有序的了。

#include
void sort(int *arr,int n){ int i,j; int tmp; for(i=0;i
=0&&arr[j]>tmp) { arr[j+1]=arr[j]; j--; } arr[j+1]=tmp; }}int main(){ int arr[]={5,13,9,8,12,45,22}; sort(arr,sizeof(arr)/sizeof(arr[0])); int i; for(i=0;i

  

转载于:https://www.cnblogs.com/curo0119/p/8586483.html

你可能感兴趣的文章
Leetcode-1012 Complement of Base 10 Integer(十进制整数的补码)
查看>>
hihocoder #1177 : 顺子 模拟
查看>>
hdu - 3460 - Ancient Printer
查看>>
学习es6:let和const使用
查看>>
java.lang.ExceptionInInitializerError
查看>>
Laravel使用Form(转载)
查看>>
easy UI
查看>>
Java static的使用 --Java笔记
查看>>
博客园自定义地址栏logo
查看>>
单例模式(Singleton)
查看>>
首次关于IIS配置遇到的一些问题
查看>>
201621123027 Week02-Java基本语法与类库
查看>>
SSH 密钥登录 SecureCRT
查看>>
Dubbo框架——整体架构
查看>>
简述KVM架构和Xen架构
查看>>
利用高级计划排程系统(APS)进行供应链的优化
查看>>
PHP SOCKE实现聊天系统
查看>>
课程总结
查看>>
vue 解决跨域
查看>>
单调队列 I
查看>>