JAVA插入排序分析
来源:互联网 发布:英语单词测试软件 编辑:程序博客网 时间:2024/04/26 06:50
其实我基础很差,最近无聊同时发现教别人的时候自己才会懂很多东西,给大家分析下面试经常遇到的插入排序。别只会用,要理解才行,随便写的,看不明白的联系我。老鸟飘过(JAVA代码,直接复制可用)
package com.chris;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 插入排序
* @author chris
*
*/
public class InsertSort {
List<Integer> al;
/**
* 构造方法,生成随机数组
*
* @param num
* @param mod
*/
public InsertSort(int num, int mod) {
al = new ArrayList<Integer>(num);
Random rand = new Random();
System.out.println("排序前的数据:");
for (int i = 0; i < num; i++) {
al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
System.out.println("al[" + i + "]=" + al.get(i));
}
}
/**
* 进行排序(由小到大)
*/
public void SortIt() {
int tempInt;
int MaxSize = 1;//待比较数据的索引,从第一个开始
System.out.println("/n/n【观察以下部分每行数据与排序前每个数据的位置】");
for (int i = 1; i < al.size(); i++) {
tempInt = (int) al.remove(i);//移除当前位置的数据,并将这个数据存放到tempInt中
if (tempInt >= ((int) al.get(MaxSize - 1))) {
al.add(MaxSize, tempInt);//如果移除的这个数据比前一个大,就把这个数据放回原位,不做处理
MaxSize++;//索引+1
System.out.println("当前list中的数据:" + al.toString());
//2,7,5
} else {
/**
* 下面的操作就是把这个数据插入当前索引之前第一个比它大的数据的索引的位置<br />
* 如果看不懂,就运行看效果就明白了br/>
*
*/
for (int j = 0; j < MaxSize; j++) {
if ((int) al.get(j) >= tempInt) {
al.add(j, tempInt);
MaxSize++;//索引+1
System.out.println("当前list中的数据:" + al.toString());
break;
}
}
}
}
System.out.println("【观察以上部分每行数据与排序前每个数据的位置】/n/n");
System.out.println("排序后的数据:");
for (int i = 0; i < al.size(); i++) {
System.out.println("al[" + i + "]=" + al.get(i));
}
}
public static void main(String[] args) {
InsertSort is = new InsertSort(10, 100);
is.SortIt();
}
}
- JAVA插入排序分析
- 插入排序原理分析及Java实现
- 插入排序分析与Java实现
- Java排序--插入排序
- 排序-插入排序-Java
- 插入排序 代码分析
- 插入排序算法分析
- 插入排序及其分析
- 插入排序算法分析
- 直接插入排序分析
- 算法分析:插入排序
- 插入排序分析
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- 插入排序算法的java实现及时间复杂度分析
- 回首Java——八大排序以及冒泡排序,插入排序分析实现
- 插入排序--直接插入排序[Java实现]
- 插入排序--折半插入排序[Java实现]
- java插入排序之直接插入排序
- 基于群星ARM的lwIP以太网中断分析
- Android 3.0新亮点,新机会
- 边属于所有最小割交集或并集的充要条件
- 调色板
- Microsoft JET Database Engine (0x80040E09) 不能更新,数据库或对象为只读
- JAVA插入排序分析
- 应清水飞云兄要求编写的AU3源码
- Word 批注的使用
- [MIT6.828] LAB4 Part B: Copy-on-Write Fork
- c++中的密码
- HOOK分发函数实现截获键盘输入
- Java对象池技术
- ajax实现
- 算法面试收集+自己的解答