14天阅读挑战赛
努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~
目录
算法知识点
提示:简单描述OR总结所学习的算法知识点,可列举文字/图片/视频教程
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。
假设我们输入的是
5,1,4,2,3
,我们从第二个数字开始,这个数字是1
,我们的任务只要看看1
有没有正确的位置,我们的做法是和这个数字左边的数字来比,因此我们比较1
和5
,1
比5
小,所以我们就交换1
和5
,原来的排列就变成了1,5,4,2,3
。接下来我们看第三个数字有没有在正确的位置。这个数字是
4
,它的左边数字是5
,4
比5
小,所以我们将4
和5
交换,排列变成了1,4,5,2,3
我们必须继续看4
有没有在正确的位置,4
的左边是1
,1
比4
小,4
就维持不动了。再来看第四个数字,这个数字是
2
,我们将2
和它左边的数字相比,都比2
大,所以就将2
一路往左移动,一直移到2
的左边是1
,这时候排序变成了1,2,4,5,3
。最后,我们检查第五个数字,这个数字是
3
,3
必须往左移,一直移到3
的左边是2
为止,所以我们的排列就变成了1,2,3,4,5
,排序完成。
算法题目描述
提示:简单描述算法知识点相关题目题意
给定一组无序的数据,如果要把它们从小到大重新排序,我们要如何实现这个排序功能呢?
做题思路
提示:可简单描述解题思路,解题步骤,找好切入点,详细讲解这道题所需要使用的算法和考点
1.首先赋值要排序数字给tmp,再找到位置后再赋值回去。
2.寻找正确的位置:从已知位置往左依次比较寻找。
public static void sort(int arr[]) {
for (int i = 1; i < arr.length; i++) {
int j = i;
int tmp = arr[j];
while (j > 0 && tmp < arr[j - 1]) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = tmp;
}
模板代码
提示:可贴上解题代码,在较难的地方可以加上自己的注释
package sort;
import java.util.Scanner;
public class InsertionSort {
public static void sort(int arr[]) {
for (int i = 1; i < arr.length; i++) {
int j = i;
int tmp = arr[j];
while (j > 0 && tmp < arr[j - 1]) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = tmp;
print(arr);
}
}
private static void print(int arr[]) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int arr[] = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
InsertionSort.sort(arr);
}
}
运行结果
提示:可对同类题型或者其他相关题目做方法论总结,或对这类题型发表自己的看法,提出自己的解题经验
思维导图
提示:可将你接下来的学习计划拆解成思维导图的形式,让学习更有计划和效率
提醒:在发布作品前请把不用的内容删掉