直接插入排序的核心思想:将待插入数插入已经有序数列中,插入后,新的数列仍然保持有序。 假设一个数组里有n个数,那么直接插入排序则需要n-1趟排序:第一趟排序将第一个数视为有序数列,将第二个数插入到有序数列中,插入后得到的新数列仍依然有序;第二趟排序前两个数组成的数列视为有序数列,将第三个数插入到有序数列中,插入后得到的新数列仍依然有序,以此类推,第n-1趟排序中,前n-1个数为有序数列,将第n个数插入到有序数...
2021-03-17:手写代码:单链表插入排序。 福大大 答案2021-03-17: 从链表的第二个节点开始遍历。当前节点的左边所有节点一定是有序的。先比较当前节点和左邻节点,如果左邻节点小于等于当前节点,直接下个节点;如果左邻节点大于当前节点,从链表的有序部分的第一个节点开始遍历,找到当前节点小于有序部分的某个节点,然后插入进去。 代码用golang编写,代码如下: package mainimport "fmt"func main() {//head := &ListNode{Va...
2021-03-17:手写代码:单链表插入排序。 福大大 答案2021-03-17: 从链表的第二个节点开始遍历。当前节点的左边所有节点一定是有序的。先比较当前节点和左邻节点,如果左邻节点小于等于当前节点,直接下个节点;如果左邻节点大于当前节点,从链表的有序部分的第一个节点开始遍历,找到当前节点小于有序部分的某个节点,然后插入进去。 代码用golang编写,代码如下: package mainimport "fmt"func main() {//head := &ListNode{Va...
冒泡排序 排序只对一维数据有意义. 两层循环, 第一层是遍历每一个元素. 第二层循环,让两两之间进行比较交换. 时间复杂度: O(n^2) 空间复杂度: O(1) 稳定性: 稳定的 def buble_sort(arr):for i in range(len(arr)-1):for j in range(len(arr)-i-1):if arr[j]>arr[j+1]:arr[j],arr[j+1]=arr[j+1],arr[j]return arr选择排序 选择后面的最小的和当前的元素进行对比 时间复杂度: O(n^2) 空间复杂度: O(1) 稳定性: 不稳定 def select_sor...
插入排序思想:在要排序的一组数中,假定前n-1个数已经排好序,现在将第n个数插到前面的有序数列中,使这n个数也是排好顺序的。如此反复循环,直到全部排好顺序.(当待排序数据全部有序时,时间复杂度为O(N),最坏情况下时间复杂度为O(N*N),与待排序数据的状态有关).public class InsertSort {public static void insertSort(int[] arr) {if(arr == null || arr.length < 2)return ;for(int i = 1; i < arr.length; i++) {for(int j = ...