Java学习笔记排序算法----------插入排序

来源:互联网 发布:zepto.js 滑动 编辑:程序博客网 时间:2024/05/21 06:52

    这是java学习笔记中排序算法的第二部分---------插入排序,插入排序的思想也很简单,可以理解为:待插入的元素下标为i那么则有前i-1个元素都已经排序结束了。在这里解决思路是:在给定原始数组的情况下,取第一个元素为起始元素,认为它是有序的,接下来取第二个元素,然后在已经有序的元素子序列中从后往前开始比较,如果有序子列中的元素大于待排序元素,则将待排序元素向前移动,直至出现有序子列中的某一元素小于等于待排序元素位置,这时候插入过程结束,插入排序也因此得名。

用一个简单的实例解释为:设有序子列为[1,2,4,7],接下来的待排序元素为3那么有:

7>3,则序列变为:[1,2,4,3,7]

4>3,则序列变为:[1,2,3,4,7]

2<3,则序列不在移动

    程序如下:

//InsertSort.java

class InsertSort {public static void main(String[] args) {int[] num_list = {9,8,7,2,5,6,4,1,56,12,14,36,89,78,45};System.out.print("排序之前的数组为:" + "\n");print(num_list);insertSort(num_list);System.out.print("排序之后的数组为:" + "\n");print(num_list);System.out.println("排序之后降序输出列表为:" + "\n");reverseprint(num_list);}public static void print(int[] num_list)    {        for(int i = 0 ; i < num_list.length ; i ++ )        {        System.out.print(num_list[i] + ",");        }        System.out.println("");    }public static void reverseprint(int[] numbers){    for(int i=numbers.length-1; i>=0; i--){    System.out.print(numbers[i] + ",");}    System.out.print("");}public static void insertSort(int[] num_list) {     int size = num_list.length;int a[] = new int[size];int temp;int j; for(int i = 0 ; i <= num_list.length-1 ; i ++ ){a[i] = num_list[i];    for(int j = i+1 ; j <= num_list.length ; j ++ ){    if(num_list[j-1]>num_list[j]){}}}    for(int i=1; i<size; i++) {           temp = num_list[i];           for(j = i; j > 0 && temp < num_list[j-1]; j--)               num_list[j] = num_list[j-1];           num_list[j] = temp;System.out.print("第" + i + "轮" + "\n");print(num_list);        }  }}
运行结果如下:运行结果如下:

排序之前的数组为:
9,8,7,2,5,6,4,1,56,12,14,36,89,78,45,
j为:0
第1轮
8,9,7,2,5,6,4,1,56,12,14,36,89,78,45,
j为:0
第2轮
7,8,9,2,5,6,4,1,56,12,14,36,89,78,45,
j为:0
第3轮
2,7,8,9,5,6,4,1,56,12,14,36,89,78,45,
j为:1
第4轮
2,5,7,8,9,6,4,1,56,12,14,36,89,78,45,
j为:2
第5轮
2,5,6,7,8,9,4,1,56,12,14,36,89,78,45,
j为:1
第6轮
2,4,5,6,7,8,9,1,56,12,14,36,89,78,45,
j为:0
第7轮
1,2,4,5,6,7,8,9,56,12,14,36,89,78,45,
j为:8
第8轮
1,2,4,5,6,7,8,9,56,12,14,36,89,78,45,
j为:8
第9轮
1,2,4,5,6,7,8,9,12,56,14,36,89,78,45,
j为:9
第10轮
1,2,4,5,6,7,8,9,12,14,56,36,89,78,45,
j为:10
第11轮
1,2,4,5,6,7,8,9,12,14,36,56,89,78,45,
j为:12
第12轮
1,2,4,5,6,7,8,9,12,14,36,56,89,78,45,
j为:12
第13轮
1,2,4,5,6,7,8,9,12,14,36,56,78,89,45,
j为:11
第14轮
1,2,4,5,6,7,8,9,12,14,36,45,56,78,89,
排序之后的数组为:
1,2,4,5,6,7,8,9,12,14,36,45,56,78,89,
排序之后降序输出列表为:


89,78,56,45,36,14,12,9,8,7,6,5,4,2,1,

很简单的一个程序,不过很有意思,继续努力!

0 0
原创粉丝点击