JAVA-基础-图解 插入排序

本文深入讲解了插入排序算法的原理及其实现过程,通过具体的Java代码示例,详细解释了如何进行升序排列,包括使用临时变量存储元素、比较大小并进行置换等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

插入排序:

  代码逻辑:

  

 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             }

 

转载于:https://www.cnblogs.com/xiaoluohao/p/11305438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值