[Java数据结构]简单排序之插入排序
来源:互联网 发布:淘宝商城怎么开店 编辑:程序博客网 时间:2024/06/05 07:38
》》图例思路
》标记第一个数
》遍历从第二个数开始,44这个数的位置就已经空了
》44作为a[in],比较a[in]和a[in-1],这里44比3大,插入空位
》外循环+1,依旧是当前标记数和自己的前一个数比较
》38比44小
》交换位置
》插入
》》代码思路:
在外层for循环中,out变量从1开始向右移动,内存in则从out变量开始向左移动,temp作为标记数也是从out开始,直到temp变量小于in所指的数据项,或者in<0,内循环结束。内循环每一趟都向右移动一个已经排序的数据项。
》》代码
package 简单排序;/* * 第一次最多比较一次,第二次最多比较两次.... * 此算法比冒泡快一倍,比选择略快 * 如果无序 O(N^2) * 如果有序或基本有序O(N) * * */class InsertArr {private long a[];private int n;// 数组的个数public InsertArr(int max) {a = new long[max];n = 0;}public void insert(int i) {a[n] = i;n++;}public void display() {for (int i = 0; i < n; i++) {System.out.print(a[i] + " ");}System.out.println("");}public void selectSort() {int out, in;long temp;for (out = 1; out < n; out++) {//从第二个数开始往后遍历,因为要和前一个比较temp = a[out];//临时数=[out]in = out;//内循环也是从第二个数开始while (in > 0 && a[in - 1] >= temp) {//in会递减,把in的前一个数和临时数做比较a[in] = a[in - 1];//把前一个数填进当前这个数的坑里,就当a[in-1]已经空了in--;}a[in] = temp;//临时数插入}}}public class Insert {public static void main(String[] args) {InsertArr arr = new InsertArr(100);arr.insert(20);arr.insert(3);arr.insert(6);arr.insert(78);arr.display();arr.selectSort();arr.display();}}
阅读全文
0 0
- [Java数据结构]简单排序之插入排序
- java数据结构之插入排序
- java数据结构排序之插入排序实现
- java简单排序学习之插入排序
- Java排序算法之简单插入排序
- JAVA数据结构:简单排序(冒泡,选择,插入)
- [Java数据结构]简单排序之冒泡排序
- [Java数据结构]简单排序之选择排序
- 《数据结构--排序》之插入排序
- 数据结构--排序之插入排序
- 数据结构排序之插入排序
- 数据结构排序之插入排序
- java数据结构之插入排序(直接插入排序、折半插入排序、希尔排序)
- 数据结构之 插入排序
- 数据结构之插入排序
- 数据结构之插入排序
- 数据结构之插入排序
- 数据结构之插入排序
- hdu_2682_prime
- 2-8·crontab计划任务管理
- 根据图片路径,把图片转为byte数组
- Rhyme/Spring5.0.2.RELEASE官方英文文档学习笔记(1) Introduction to the Spring IoC container and beans
- 数据库连接池
- [Java数据结构]简单排序之插入排序
- 用java计算一个目录里所有文件的大小
- HDU 5916
- 代码重构之Spring+工厂+策略模式
- JS——事件冒泡(1)
- c++中的处理类型的三种方式
- 爬虫实战:基于 HtmlParser 实现网页链接的提取
- matlab中num2str
- qt编译caffe遇到的opencv版本问题