JAVA-基础-图解 插入排序
插入排序:
代码逻辑:
1 package cn.lk; 2 3 public class Demo01 { 4 public static void main(String[] args) { 5 6 int a[]={1,58,62,45,874,12,496,152,123,-5,-45,-9}; 7 8 9 10 11 12 //-插入排序 13 //--第一层for循环从下标为1的元素开始选择 14 for(int i =1;i<a.length;i++){ 15 int tmp=a[i]; //-创建一个临时变量将第一层for循环选中的元素存起来 16 int point=i; //-创建一个标记变量将第一层for循环选中的元素的下标存起来 17 /* 18 * -第二层for循环选出来的元素和第一层for循环选出来的元素比较大小 19 * 这里的j=i-1表示:选择第一层for循环选中的元素的前一个元素 20 * 之后j--表示:倒着和a[i]比较大小 21 * */ 22 for(int j=i-1;j>=0 && a[j]>tmp;j--){//在此设置升序或者降序(例子为升序) 23 a[j+1]=a[j];//符合条件,则将小数的值传给大数 24 point=j; //将之前标记的下标改为大数的下标 25 } 26 //第二层for循环结束后才开始实际排序替换 27 a[point]=tmp;//-将临时变量存的元素赋值给当前标记的下标元素 28 //至此实现了两个元素值的置换 29 } 30 for (int i : a) { 31 System.out.println(i); 32 } 33 34 } 35 36 37 }
原理:
代码实现:
1 /**
2 插入排序
3 */
4 public class Demo01{
5 public static void main(String args[]){
6 int nums [] = {1,34,56,8,-32,7,-9,0,235};
7
8 for(int i = 1;i<nums.length;i++){
9 int tmp = nums[i];
10 int point = i;
11 for(int j=i-1;j>=0&&nums[j]>tmp;j--){
12 nums[j+1]=nums[j];
13 point = j;
14 }
15 nums[point] = tmp;
16 }
17
18 for(int n : nums){
19 System.out.println(n);
20 }
21 }
22 }