mac + python3.8 + django3.0.8 + mysql 遇到資料庫連線包問題
阿新 • • 發佈:2020-07-18
基本思路分析:
首先選擇第一個數作為基數,因為只有一個數,所以他就是一個有序的陣列嘛。
然後遍歷他後面的數,如果比他小,插入到他前面,如果比他大,就插入到他後面。此時就有兩個數已經成為有序的了;
在遍歷下一個數,找到他該插入的位置,即該位置的後一個數比改數大,前一個數比該數小。
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; }