概述
什么是直接插入排序
有的时候你会一样东西却不知道名字会很可惜。直接插入排序即将数组的第一个元素看为有序序列,第二个元素和有序序列中的元素依次对比插入适当位置,成为新的有序序列,依次操作。
直接插入排序
直接插入排序的重难点:
- 循环条件中的变量在循环体中不能变
- 如何找到要插入元素在有序序列中的位置,可以用while循环实现
while循环带有判断的功能,如下面的while语句
while(temp<arr[j]) {
arr[j+1] = arr[j];
j--;
}
看起来条件是temp<arr[j],实际上条件实现了arr[j-1]<temp<arr[j]判断,准确找到了插入元素应该插入到有序序列的位置。
直接排序实现代码:
import java.util.Arrays;
public class Demo1 {
public static void main(String[] args) {
int[] arr = new int[] {1,43,8,4,2,287,5};
Math math = new Math();
math.run(arr);
}
}
class Math{
public void run(int[] arr) {
for(int i=1;i<arr.length;i++) {
if(arr[i]<arr[i-1]) { //牵扯循环时,循环条件中的变量在循环体中千万不能变
int temp = arr[i];
int j = i-1;
while(temp<arr[j]) {
arr[j+1] = arr[j];
j--;
}
arr[j+1 ] = temp;
}
}
System.out.println(Arrays.toString(arr));
}
}
次品直接插入排序
第一次尝试时,并没有想到用while循环,使用了for循环加if判断依次将有序序列与插入元素对比。比正品多了两个循环,时间复杂多陡升,欣慰的是也能实现排序功能。
完整代码:
import java.util.Arrays;
public class Demo1 {
public static void main(String[] args) {
int[] arr = new int[] {1,43,8,4,2,287,5};
Math math = new Math();
math.run(arr);
}
}
class Math{
public void run(int[] arr) {
for(int i=1;i<arr.length;i++) {
if(arr[i]<arr[i-1]) { //牵扯循环时,循环条件中的变量在循环体中千万不能变
cricle(arr,i);
}
}
System.out.println(Arrays.toString(arr));
}
public void cricle(int[] arr,int n) {
for(int i=0;i<n;i++) {
if(arr[n]>arr[i]&&arr[n]<arr[i+1]) {
int temp = arr[n];
for(int j=n;j>i+1;j--) {
arr[j] = arr[j-1];
}
arr[i+1] = temp;
}
}
}
}
最后
以上就是帅气犀牛为你收集整理的直接插入排序—排序系列的全部内容,希望文章能够帮你解决直接插入排序—排序系列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复