直接插入排序

来源:互联网 发布:松下机器人编程视频 编辑:程序博客网 时间:2024/06/07 20:18
package algorithm.sort;import java.util.Arrays;/** * 直接插入排序;O(n^2);从大到小排序 * 思想:循环数组,依次查找当前数据在有序序列中的位置,然后将数据插入有序序列; * 比如:先处理i=1的数据比较,如果a[1]>a[0],交换,这是a[0-1]是有序的;然后处理i=m的数据,将a[m]依次和前面的比较直到找到比a[m]大的a[p],将a[m]插入a[p-1]的位置,这是a[0-m]是有序的;一直到a[0-n]有序,结束 * @author wangchao * */public class Zhicha {public void sort(int[] array){for (int i = 1; i < array.length; i++) {int j = i-1;while(j>=0){if(array[j]>=array[i]) break;j--;}int insertIndex = j+1;if(insertIndex<i){//说明j移动了,则移动数据,否则array[i]本身就是最小的int temp = array[i];for (int j2 = i; j2 > insertIndex; j2--) {array[j2] = array[j2-1];}array[insertIndex] = temp;}}}public static void main(String[] args) {int[] array = new int[]{2,1,6,3,3,8,9}; Zhicha pai = new Zhicha();pai.sort(array);System.out.println(Arrays.toString(array));}}


其他排序算法批量下载地址:几种经典的排序算法java实现

0 0
原创粉丝点击