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

简介: 作者: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 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
2月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
21 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
2月前
|
搜索推荐 算法
【排序算法(一)】——插入排序,选择排序 —> 深层解析
【排序算法(一)】——插入排序,选择排序 —> 深层解析
|
5月前
|
算法 搜索推荐 C#
|
6月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
6月前
|
算法 搜索推荐
数据结构与算法-插入排序
数据结构与算法-插入排序
32 2
|
6月前
|
算法 搜索推荐 数据可视化
【漫画算法】插入排序:插入宝石的传说
【漫画算法】插入排序:插入宝石的传说
|
6月前
|
人工智能 搜索推荐 JavaScript
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
43 0
|
6月前
|
机器学习/深度学习 搜索推荐 算法
【C/排序算法】:直接插入排序和希尔排序
【C/排序算法】:直接插入排序和希尔排序
45 0
|
6月前
|
搜索推荐 算法
排序算法之插入排序
排序算法之插入排序
46 0
|
6月前
|
机器学习/深度学习 移动开发 算法
二维矩形件排样算法之最低水平线算法实现
二维矩形件排样算法之最低水平线算法实现
109 0