视频+图文+动画 详解插入排序(轻松易理解系列)
2021-02-12 20:17
标签:自己 码代码 部分 变化 www while循环 ack color tps 点击这里去B站观看视频~~ 橙色的数字:有序表中的数字 为了便于理解代码,在这里我们需用两个变量: 原始数组:7,3,22,15,8 排序结果: 3,7,22,15,8 原始数组:3,7,22,15,8 排序结果: 3,7,22,15,8 原始数组:3,7,22,15,8 排序结果: 3,7,15,22,8 原始数组:3,7,15,22,8 排序结果: 3,7,15,22,8 根据下表红色数据部分,我们可以看出: arr[insertIndex+1]=arr[insertIndex]即将原来arr[1]=3换为现在的arr[1]=7 7,3,22,15,8 -->7,3,22,15,8 --> 3,7,22,15,8 insertIndex--后InsertIndex=-1 因为此时insertIndex=-1,满足 所以arr[insertIndex+1]=insertValue 即arr[0]=3 输出第一次排序的结果:3,7,22,15,8 --> 3,7,22,15,8 3,7,22,15,8 --> 3,7,22,15,8 所以本次排序不发生交换 输出第二次排序的结果:3,7,22,15,8 --> 3,7,22,15,8 arr[insertIndex+1]=arr[insertIndex]即将原来arr[3]=15换为现在的arr[3]=22 3,7,22,15,8 --> 3,7,22,15,8 --> 3,7,22,22,8 insertIndex--后InsertIndex=1但insertValue=15>arr[insertIndex]=arr[1]=7 3,7,22,22,8 --> 3,7,22,22,8 不满足while循环条件,退出while循环,待插入数:15的位置找到即arr[2]=15 因为此时insertIndex=1,满足 3,7,22,22,8 --> 3,7,15,22,8 所以arr[insertIndex+1]=insertValue 即arr[2]=15 输出第三次排序的结果:3,7,15,22,8 arr[insertIndex+1]=arr[insertIndex]即将原来arr[3]=22换为现在的arr[4]=22 3,7,15,22,8 --> 3,7,15,22,8 --> 3,7,15,22,22 insertIndex--后InsertIndex=2且insertValue=8 arr[insertIndex+1]=arr[insertIndex]即将原来arr[3]=22换为现在的arr[3]=15 3,7,15,22,22 --> 3,7,15,22,22 --> 3,7,15,15,22 insertIndex--后InsertIndex=1但insertValue=8>arr[insertIndex]=arr[1]=7 因为此时insertIndex=1,满足 3,7,15,15,22 --> 3,7,8,15,22 所以arr[insertIndex+1]=insertValue 即arr[2]=8 输出第四次排序的结果:3,7,8,15,22 到此插入排序就讲解完了~~ 视频+图文+动画 详解插入排序(轻松易理解系列) 标签:自己 码代码 部分 变化 www while循环 ack color tps 原文地址:https://www.cnblogs.com/Qpgshare/p/12730307.html
一、视频讲解插入排序
二、插入排序的思想
三、插入排序的动画演示及思路分析
动画演示:
粉色的数字:每轮无序表的第一个数
绿色的数字:有序表中需与无序表粉色数字进行比较的数思路分析:以7,3,22,15,8为例
第一次排序:拿出无序表中的第1个元素3,与有序表的元素7进行比较
有序表:7
insertIndex:1-1=0 (从此下标开始往前找合适的位置)
无序表:3,22,15,8
insertValue (待插入的数):arr[1]–>3
第二次排序:拿出无序表中的第1个元素22,与有序表的元素3,7进行比较
有序表:3,7
insertIndex:2-1=1 (从此下标开始往前找合适的位置)
无序表:22,15,8
insertValue (待插入的数):arr[2]–>22
第三次排序:拿出无序表中的第1个元素15,与有序表的元素3,7,22进行比较
有序表:3,7,22
insertIndex:3-1=2 (从此下标开始往前找合适的位置)
无序表:15,8
insertValue (待插入的数):arr[3]–>15
第四次排序:拿出无序表中的第1个元素8,与有序表的元素3,7,15,22进行比较
有序表:3,7,15,,22
insertIndex:4-1=3 (从此下标开始往前找合适的位置)
无序表:8
insertValue (待插入的数):arr[4]–>8
四、插入排序的代码+代码优化+代码详解
代码--————多个while循环分别控制排序:
package Sort;
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int arr[] = { 7, 3, 22, 15, 8 };
int insertValue = 0; //(无序表的第一个值)待插入的值
int insertIndex = 0; //从这里开始查找待插入值的下标
//第一次排序
insertValue = 3;
insertIndex = 1-1;
while (insertIndex >= 0 && insertValue = 0 && insertValue = 0 && insertValue = 0 && insertValue
结果:
优化代码--————for循环嵌套while循环控制排序:
优化分析:
insertValue:无序表中第一个数即待插入的数
insertIndex:从此下标开始往前找合适的位置
第一次排序
arr[1]=3
1-1=0
第二次排序
arr[2]=22
2-1=1(0-1)
第三次排序
arr[3]=15
3-1=2(0-2)
第四次排序
arr[4]=8
4-1=3(0-3)
代码:
package Sort;
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int arr[] = { 7, 3, 22, 15, 8 };
int insertValue = 0; //(无序表的第一个值)待插入的值
int insertIndex = 0; //从这里开始查找待插入值的下标
for (int i = 1; i = 0 && insertValue
结果:
代码详解(优化版本):以7,3,22,15,8为例
第一次排序时:
while (insertIndex >= 0 && insertValue 进入while循环
while (insertIndex >= 0 && insertValue
不满足while循环条件,退出while循环,待插入数:3的位置找到即arr[0]=3if (insertIndex + 1 != i)
进入if分支语句if (insertIndex + 1 != i) {//如果insertIndex + 1 != i说明此数在正确位置上不用交换
arr[insertIndex + 1] = insertValue;
}
第二次排序时:
不满足while循环的条件while (insertIndex >= 0 && insertValue 不进入while循环
while (insertIndex >= 0 && insertValue
if (insertIndex + 1 != i)
不进入if分支语句if (insertIndex + 1 != i) {//如果insertIndex + 1 != i说明此数在正确位置上不用交换
arr[insertIndex + 1] = insertValue;
}
第三次排序时:
while (insertIndex >= 0 && insertValue 进入while循环
while (insertIndex >= 0 && insertValue
if (insertIndex + 1 != i)
进入if分支语句if (insertIndex + 1 != i) {//如果insertIndex + 1 != i说明此数在正确位置上不用交换
arr[insertIndex + 1] = insertValue;
}
第四次排序时:
while (insertIndex >= 0 && insertValue 进入while循环
while (insertIndex >= 0 && insertValue
不满足while循环条件,退出while循环,待插入数:8的位置找到即arr[2]=8if (insertIndex + 1 != i)
进入if分支语句if (insertIndex + 1 != i) {//如果insertIndex + 1 != i说明此数在正确位置上不用交换
arr[insertIndex + 1] = insertValue;
}
上一篇:C#多线程(6):线程通知
下一篇:python10 项目目录结构
文章标题:视频+图文+动画 详解插入排序(轻松易理解系列)
文章链接:http://soscw.com/index.php/essay/54594.html