Java实现简单插入排序
来源:互联网 发布:红蜻蜓软件 编辑:程序博客网 时间:2024/05/16 18:54
一、基本思想
直接插入排序是将未排序的数据插入至已排好序序列的合适位置。
具体流程如下:
1、首先比较数组的前两个数据,并排序;
2、比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置;
3、比较第四个元素与前三个排好序的数据,并将第四个元素放入适当的位置;
......
4、直至把最后一个元素放入适当的位置。
假如有初始数据:25 11 45 26 12 78。
1、首先比较25和11的大小,11小,位置互换,第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
2、对于第三个数据45,其大于11、25,所以位置不变,顺序依旧为:[11, 25, 45, 26, 12, 78]。
3、对于第四个数据26,其大于11、25,小于45,所以将其插入25和45之间,顺序为:[11, 25, 26, 45, 12, 78]。
.......
4、最终顺序为:[11, 12, 25, 26, 45, 78]。
具体流程如下:
1、首先比较数组的前两个数据,并排序;
2、比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置;
3、比较第四个元素与前三个排好序的数据,并将第四个元素放入适当的位置;
......
4、直至把最后一个元素放入适当的位置。
假如有初始数据:25 11 45 26 12 78。
1、首先比较25和11的大小,11小,位置互换,第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
2、对于第三个数据45,其大于11、25,所以位置不变,顺序依旧为:[11, 25, 45, 26, 12, 78]。
3、对于第四个数据26,其大于11、25,小于45,所以将其插入25和45之间,顺序为:[11, 25, 26, 45, 12, 78]。
.......
4、最终顺序为:[11, 12, 25, 26, 45, 78]。
二、时间复杂度
直接插入排序是稳定的。直接插入排序的平均时间复杂度为O(n2)。
三、Java实现
public class InsertionSort { public static void main(String[] args){ int[] arr={25,11,45,26,12,78}; insertionSort(arr); } public static void insertionSort(int[] arr){ int tmp; for (int i = 1; i<arr.length; i++){ //待插入数据 tmp = arr[i]; int j; for(j = i-1; j>=0; j--){ //判断是否大于tmp,大于则后移一位 if (arr[j] > tmp){ arr[j+1]=arr[j]; }else{ break; } } //将待插入的数字放在不比它大的数字后面,arr[j]不比它大 arr[j+1] = tmp; } }}
阅读全文
0 0
- 简单插入排序--Java实现
- Java实现简单插入排序
- Java 实现插入式简单排序
- 简单的插入排序 java实现
- 简单东西-插入排序算法Java实现
- 二分法插入排序的java简单实现
- java简单插入排序
- java简单排序-插入排序
- java实现插入排序
- java实现插入排序
- java实现插入排序
- 插入排序---java实现
- Java实现插入排序
- 插入排序 Java实现
- 插入排序(Java实现)
- java实现插入排序
- java实现插入排序
- Java实现插入排序
- react native:Command /bin/sh failed with exit code 1 报错解决
- pdf阅读器怎么给pdf文件添加图像
- poj2446 Chessboard 二分图最大匹配 思考 匈牙利算法BFS实现
- srand()和rand()
- MySQL 中 delete 语句的子查询限制
- Java实现简单插入排序
- python emoji 表情过滤
- C++11中的std::function,Lambda表达式
- Eclipse上red5插件安装
- 新域名访问方式从http改为https(为了支持微信小程序https用)
- lintcode刷题——搜索旋转排序数组
- 消息摘要、数字签名、数字证书
- Gym 101190F Foreign Postcards
- javaScript实现小球碰撞