插入排序和前面两种有点不同啦。插入排序有比较,移动的动作,插入排序分为已排序部分和待插入部分,将待插入数据与有序部分比较,遍历有序部分,找到第一个比插入数据的位置,插入数据,再移动插入位置之后的数据。
比较、插入、移动数据,移动还是有点麻烦的
public class InsertOne { /** * @author chengdu * @param args */ private int[] array; public void setArray(int[] array){ this.array = array; } public int[] getArray(){ return array; } public void insertOneMove(int x, int y){ // y > x if(x > array.length || y > array.length){ System.out.println("数组越界"); }else{ if(array[x] > array[y]){ int temp = array[x]; array[x] = array[y]; for(; y > x + 1 ; y--){ array[y] = array[y-1]; } array[x+1] = temp; } } } public static void main(String[] args) { // TODO Auto-generated method stub InsertOne insertone = new InsertOne(); int[] testarray = {1,2,7,4,5,6,3,8}; insertone.setArray(testarray); insertone.insertOneMove(2, 6); System.out.println(Arrays.toString(testarray)); } }
插入排序
public class InsertSort { /** * @author chengdu * @param args */ private InsertOne insertone; public void setInsertone(InsertOne insertone){ this.insertone = insertone; } public InsertOne getInsertone(){ return insertone; } public void insertSortMethod(int[] array){ int pos; int lenarray = array.length; insertone.setArray(array); for(pos=1; pos < lenarray; pos++){ System.out.println("次数---------:"+pos); for(int i=0; i < pos; i++){ insertone.insertOneMove(i, pos); } //输出已经排好顺序的部分 for(int i=0; i < pos+1; i++){ System.out.println(array[i]); } } } public static void main(String[] args) { // TODO Auto-generated method stub InsertOne insertone = new InsertOne(); InsertSort insertsort = new InsertSort(); insertsort.setInsertone(insertone); int[] array = {9, 1, 6, 3, 4, 2, 5, 13, 15, 10}; insertsort.insertSortMethod(array); System.out.println("---------顺序-----------------"); for(Integer i : array){ System.out.println(i); } } }
运行
次数---------:1
1
9
次数---------:2
1
6
9
次数---------:3
1
3
6
9
次数---------:4
1
3
4
6
9
次数---------:5
1
2
3
4
6
9
次数---------:6
1
2
3
4
5
6
9
次数---------:7
1
2
3
4
5
6
9
13
次数---------:8
1
2
3
4
5
6
9
13
15
次数---------:9
1
2
3
4
5
6
9
10
13
15
---------顺序-----------------
1
2
3
4
5
6
9
10
13
15
时间: 2024-12-28 17:28:31