1. 程式人生 > 實用技巧 >mac + python3.8 + django3.0.8 + mysql 遇到資料庫連線包問題

mac + python3.8 + django3.0.8 + mysql 遇到資料庫連線包問題

基本思路分析:

首先選擇第一個數作為基數,因為只有一個數,所以他就是一個有序的陣列嘛。

然後遍歷他後面的數,如果比他小,插入到他前面,如果比他大,就插入到他後面。此時就有兩個數已經成為有序的了;

在遍歷下一個數,找到他該插入的位置,即該位置的後一個數比改數大,前一個數比該數小。

5 1 4 2 3 —— 排序時,先進行比較的是1,他的位置就應該在五前面,5後移,1插入

1 5 4 2 3 —— 第二趟,排4了,4比5小,5後移,四的位置暫時在1和5之間,再看1和4比較,正好4比1大,因此不用把1後移,直接將4插入

1 4 5 2 3

.....

1 2 3 4 5

public static int [] insertSort(int [] array){
        for (int i = 1; i < array.length; i++) {
            //定義一個變數,儲存待插入的資料
            int shouldInsert = array[i];
            //定義一個變數,用來儲存待插入的數的之前的下標
            int beforeInsertIndex = i - 1;
            while (beforeInsertIndex >= 0
&& shouldInsert < array[beforeInsertIndex]){ //將該位置的數後移,給待插入的數騰出位置來 array[beforeInsertIndex + 1] = array[beforeInsertIndex]; beforeInsertIndex --; } //退出while表示已經找到了要插入的位置 array[beforeInsertIndex + 1] = shouldInsert; }
return array; }

另一套同樣思路不同表達方式

//定義一個插入排序的演算法
    public static int [] insertSort1(int [] array){
        for (int i = 0; i < array.length - 1; i++) {
            //定義一個變數,儲存待插入的資料(在最開始,待插入的資料是array[1])
            //即現在為第二個資料
            int shouldInsert = array[i+1];
            //定義一個變數,用來讀取待插入的資料的前面一個數據
            //即現在為第一個資料
            int beforeInsert = i;
            int count = -1;
            while (beforeInsert >= 0 && shouldInsert < array[beforeInsert]){
                //把待插入的數字的前一個數字後移
                count++;
                array[beforeInsert + 1] = array[beforeInsert];
                beforeInsert--;
            }
            array[i - count] = shouldInsert;
        }
        return array;
    }