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

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

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 

Java代码
  1. public class Insertion {   
  2.   
  3.     public static void main(String[] args) {   
  4.         int n = 20;   
  5.         MyItem [] a = new MyItem[n];   
  6.         for (int i = 0; i < n; i++) {   
  7.             a[i] = new MyItem();   
  8.             a[i].rand();   
  9.         }   
  10.            
  11.         for (int i = 0; i < n; i++) {   
  12.             System.out.print(a[i] + " ");   
  13.         }   
  14.            
  15.         insertion(a, 0, n);   
  16.         System.out.println("");   
  17.         print(a, n);   
  18.     }   
  19.        
  20.     private static void print(MyItem a [], int n){   
  21.         for (int i = 0; i < n; i++) {   
  22.             System.out.print(a[i] + " ");   
  23.         }   
  24.     }   
  25.        
  26.     public static void insertion(MyItem [] a, int l, int r){   
  27.         int i;   
  28.         for(i = r - 1; i >= l + 1; i--){   
  29.             compExch(a, i-1, i);   
  30.         }   
  31.         for (i = l + 2; i < r; i++){   
  32.             int j = i;   
  33.             MyItem v = a[i];   
  34.             while(less(v, a[j - 1])){   
  35.                 a[j] = a[j - 1];    
  36.                 j--;   
  37.             }   
  38.             a[j] = v;   
  39.         }   
  40.     }   
  41.        
  42.     public static boolean less(Item v, Item w){   
  43.         return v.less(w);   
  44.     }   
  45.        
  46.     public static void exch(Item [] a, int i, int j){   
  47.         Item t = a[i];   
  48.         a[i] = a[j];   
  49.         a[j] = t;   
  50.     }   
  51.        
  52.     public static void compExch(Item [] a, int i, int j){   
  53.         if(less(a[j],a[i])){   
  54.             exch(a, i, j);   
  55.         }   
  56.     }   
  57. }  
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);		}	}}

插入排序的运行时间主要依赖于输入文件中关键字的最初顺序。如,文件很大而且关键字已经排好(或者几乎排好),那么插入排序运算就很快了,而选择排序运行却很慢。

转载于:https://www.cnblogs.com/wuyida/archive/2012/11/01/6301137.html

你可能感兴趣的文章
ubuntu下sogou突然不能用
查看>>
Linux 普通用户拿到root权限及使用szrz命令上传下载文件
查看>>
联合体union
查看>>
人物角色群体攻击判定(一)
查看>>
JavaWeb学习过程 之c3p0的使用
查看>>
MySql Delimiter
查看>>
一步步学习微软InfoPath2010和SP2010--第九章节--使用SharePoint用户配置文件Web service(2)--在事件注册表单上创建表单加载规则...
查看>>
使用客户端对象模型读取SharePoint列表数据
查看>>
NYOJ 289 苹果(01背包)
查看>>
【啃不完的算法导论】- 动态规划 - 最长公共子序列(概念篇)
查看>>
Day39:threading模块、ThreadLocal
查看>>
[Leveldb源码剖析疑问]-block_builder.cc之Add函数
查看>>
POJ 1328 Radar Installation 贪心
查看>>
约法三章
查看>>
canvas合成图片 圣诞节新技能戴帽
查看>>
JavaScript快速入门(四)——JavaScript函数
查看>>
css调用外部字体
查看>>
The Last Practice
查看>>
c#序列化和反序列化
查看>>
使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一
查看>>