【算法实现】插入排序算法

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ package org.bupt.test; import java.util.ArrayList; class MyResource { ArrayList arrList= new Arra...

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

package org.bupt.test;
import java.util.ArrayList;
class MyResource {
	ArrayList<Integer> arrList= new ArrayList();
	public MyResource(ArrayList<Integer> arrList) {
		this.arrList = arrList;
	}
	public void insertionSort() {
		int j;
		
		/*将数组向右平移一位,留出arrList[0],用作哨兵*/
		arrList.add(arrList.get(arrList.size()-1));
		for (j =  arrList.size()-1; j>0;j--) {
			arrList.set(j, arrList.get(j-1));
		}
		
		for (int i = 1; i < arrList.size(); i++) {
			if (arrList.get(i)<arrList.get(i-1)) {
				arrList.set(0, arrList.get(i)) ;
			
				/*在查找循环中"监视"下标变量j是否越界。一旦越界(即j=0),因为arrList[0]和自己比较,循环判定条件不成立使得查找循环结束,
				 * 从而避免了在该循环内的每一次均要检测j是否越界(即省略了循环判定条件"j>=1")。 */
				for (j = i-1; arrList.get(0) < arrList.get(j); j--) {
					arrList.set(j+1, arrList.get(j));
				}
			
				arrList.set(j+1, arrList.get(0));
			}
		}
	}
	public void printOut() {
	    for (int i = 1; i < 10; i++) {
			System.out.print(arrList.get(i)+" ");
		}
	}
}
public class Main {
  public static void main(String args[]) throws Exception {
    ArrayList<Integer> arrList = new ArrayList(10); 
    
    for (int i = 0; i < 9; i++) {
		arrList.add(new Integer((int) (Math.random()*100)));
		System.out.print(arrList.get(i)+" ");
	}
    System.out.println("");
    
    MyResource mtMyResource = new MyResource(arrList);
    
    mtMyResource.insertionSort();
    
    mtMyResource.printOut();
    
  }
}

 

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
4月前
|
机器学习/深度学习 存储 算法
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
|
4月前
|
搜索推荐 算法 C#
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
47 1
|
15天前
|
人工智能 搜索推荐 Shell
【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?
【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?
|
17天前
|
搜索推荐 算法 Shell
【数据结构与算法】直接插入排序和希尔排序
【数据结构与算法】直接插入排序和希尔排序
|
19天前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解
|
1月前
|
搜索推荐 Python
Python实现插入排序算法
Python实现插入排序算法
10 1
|
1月前
|
搜索推荐 C#
C#实现插入排序算法
C#实现插入排序算法
12 1
|
1月前
|
搜索推荐 Java
Java实现插入排序算法
Java实现插入排序算法
11 0
|
2月前
|
搜索推荐 Python
python实现插入排序算法。
python实现插入排序算法。
13 4
|
2月前
|
搜索推荐 算法 Java
【数据结构排序算法篇】----插入排序【实战演练】
【数据结构排序算法篇】----插入排序【实战演练】
32 1