插入排序法

来源:互联网 发布:源码怎么使用 编辑:程序博客网 时间:2024/06/07 16:50

1.基本思想:插入排序法的排序思想就是从数组的第二个元素开始,将数组中的每一个元素按照规则插入到已排好序的数组中以达到排序的目的.一般情况下将数组的第一个元素作为启始元素,从第二个元素开始依次插入.由于要插入到的数组是已经排好序的,所以只是要从右向左找到比插入点(下面程序中的insertNote)小(对升序而言)的第一个数组元素就插入到其后面.直到将最后一个数组元素插入到数组中,整个排序过程就算完成.

2.代码实现:

package com.sun.sort;import java.util.Arrays;/** *  * @author:孙创 * @date:2017年4月27日 * @Discription:插入排序法 */public class InsertionSort {public static void main(String[] args) {int[] b = new int[] { 8, 7, 4, 6, 9, 2 };// InsertionSort.insertionSort(b);InsertionSort.insertionSort2(b);}// 插入法从小到大排序;交换法public static void insertionSort(int[] b) {int i = 0;int k = 0;// 6, 9, 4, 8, 3for (int j = 1; j < b.length; j = k + 1) {k = j;while ((i >= 0) && (i < j)) {if ((b[j] < b[i])) {int temp = b[i];b[i] = b[j];b[j] = temp;i--;j--;} else {break;}}i = k;// 新数插入之后第一个比较的数}System.out.println(Arrays.toString(b));}// 插入法从小到大排序;移位法public static void insertionSort2(int[] b) {int i;// 扫描次数int j;// 以j来定位比较的元素int tmp;// 用来暂存数据for (i = 1; i < b.length; i++) {tmp = b[i];j = i - 1;// 最前面的一位while (j >= 0 && tmp < b[j]) {// 如果第二元素小于第一元素b[j + 1] = b[j];// 就把所有元素往后推一个位置j--;}b[j + 1] = tmp;// 最小的元素放到第一个位置}System.out.println(Arrays.toString(b));}}



0 0
原创粉丝点击