java算法:插入排序
来源:互联网 发布:手机上能注册淘宝店铺 编辑:程序博客网 时间:2024/05/20 18:47
java算法:插入排序
如,对EXAMPLE 字母进行排序:
E X A M P L E 开始
E [X] A M P L E E<X 不变
[A] E X M P L E A < E:A插入到E前
A E [M] X P L E ...
A E M [P] X L E
A E [L] M P X E
A E [E] L M P X
- public class Insertion {
- public static void main(String[] args) {
- int n = 20;
- MyItem [] a = new MyItem[n];
- for (int i = 0; i < n; i++) {
- a[i] = new MyItem();
- a[i].rand();
- }
- for (int i = 0; i < n; i++) {
- System.out.print(a[i] + " ");
- }
- insertion(a, 0, n);
- System.out.println("");
- print(a, n);
- }
- private static void print(MyItem a [], int n){
- for (int i = 0; i < n; i++) {
- System.out.print(a[i] + " ");
- }
- }
- public static void insertion(MyItem [] a, int l, int r){
- int i;
- for(i = r - 1; i >= l + 1; i--){
- compExch(a, i-1, i);
- }
- for (i = l + 2; i < r; i++){
- int j = i;
- MyItem v = a[i];
- while(less(v, a[j - 1])){
- a[j] = a[j - 1];
- j--;
- }
- a[j] = v;
- }
- }
- public static boolean less(Item v, Item w){
- return v.less(w);
- }
- public static void exch(Item [] a, int i, int j){
- Item t = a[i];
- a[i] = a[j];
- a[j] = t;
- }
- public static void compExch(Item [] a, int i, int j){
- if(less(a[j],a[i])){
- exch(a, i, j);
- }
- }
- }
public class Insertion {public static void main(String[] args) {int n = 20;MyItem [] a = new MyItem[n];for (int i = 0; i < n; i++) {a[i] = new MyItem();a[i].rand();}for (int i = 0; i < n; i++) {System.out.print(a[i] + " ");}insertion(a, 0, n);System.out.println("");print(a, n);}private static void print(MyItem a [], int n){for (int i = 0; i < n; i++) {System.out.print(a[i] + " ");}}public static void insertion(MyItem [] a, int l, int r){int i;for(i = r - 1; i >= l + 1; i--){compExch(a, i-1, i);}for (i = l + 2; i < r; i++){int j = i;MyItem v = a[i];while(less(v, a[j - 1])){a[j] = a[j - 1]; j--;}a[j] = v;}}public static boolean less(Item v, Item w){return v.less(w);}public static void exch(Item [] a, int i, int j){Item t = a[i];a[i] = a[j];a[j] = t;}public static void compExch(Item [] a, int i, int j){if(less(a[j],a[i])){exch(a, i, j);}}}
插入排序的运行时间主要依赖于输入文件中关键字的最初顺序。如,文件很大而且关键字已经排好(或者几乎排好),那么插入排序运算就很快了,而选择排序运行却很慢。
- java插入排序算法
- java算法:插入排序
- java算法---插入排序
- Java 插入排序算法
- Java插入排序算法
- Java算法-插入排序
- java 插入排序算法
- Java算法-插入排序
- 插入排序算法-java
- java算法-插入排序
- Java算法-插入排序
- java 排序算法---插入排序
- Java排序算法:插入排序
- Java算法-排序-插入排序
- Java-排序算法之插入排序算法
- Java算法 直接插入排序
- 插入排序算法---java 实现
- java实现插入排序算法
- java算法:排序实现
- iOS开发之iOS程序偏好设置(Settings Bundle)的使用
- 记录Android Framework级开发的心酸历程(一):环境篇
- ICMP数据包-实战分析
- java算法:选择排序
- java算法:插入排序
- div自动换行word-break:break-all和word-wrap:break-word的区别
- java算法:冒泡排序
- 扫雷___界面的加载
- MFC工具条与状态条设计
- 十六. Sql server表格,索引,视图的命名规范
- Android Touch事件传递机制解析
- ubuntu常用命令
- asp.net viewstate原理