直接插入排序算法实现

来源:互联网 发布:网络安装检测报告 编辑:程序博客网 时间:2024/04/23 22:44

用Java实现直接插入排序

思想:假设你左手上有扑克牌,且从左往右是有序的(即已经按照牌的大小排好顺序)现在抓到一张牌,肯定是找个合适的位置插入到牌堆中,在插入时候,遵循原则:从右边的牌开始依次比较要插入的那张牌的大小,若插入的牌小,手中的牌需要向右移动,重复比较插入手中牌堆中牌的大小,直到找到一张比插入的牌要大的牌,故代码需要体现两点:

A、比较

B、牌堆中牌的移动,且是向右移动

package com.mifeng.acm.practice;import java.util.Arrays;import org.junit.Test;/** * 直接插入排序 * @author 21405 * */public class InsertSortDemo {public static void main(String[] args) {// TODO Auto-generated method stub}@Testpublic void test(){      //int[] array = new int[]{9, 7, 6, 4, 3, 1};int[] array = new int[]{2, 4, 1, 6, 3, 5};System.out.println("排序前:"+ Arrays.toString(array));insertSort(array);}public void insertSort(int A[]){for(int i = 1; i< A.length; i++){int j = i-1;int key = A[i];while(j >= 0 && key <= A[j]){A[j+1] = A[j];j = j - 1;}A[j+1] = key;}System.out.println(Arrays.toString(A));}}
代码分析:

1)里层循环表示与牌堆中的牌比较,若插入的牌小,牌堆中的比插入的牌要大的牌都要右移

2)外层循环表示要插入的牌


0 0
原创粉丝点击