一、前言(算法實現將採用Java語言)
算法對於程序員來說還是非常重要的,在我們平常的面試中, 算法題目都是必不可少的, 算法可以說是入職的門檻, 也是面試的加分利器。
要知道, 在大公司中, 你的學歷可以達不到標準, 只要你的基礎紮實, 算法邏輯夠清晰, 一般都會破格錄用你的。
算法將會分爲幾篇文章, 大概是一星期一章, 也是很久沒更新博客了, 準備給大家分享些即實用面試又能加分的博文出來。
在學習算法的過程中, 不要有太大的壓力, 每個算法都有對應的邏輯, 只要理解的他的工作原理, 代碼其實就只是體現的一種方式罷了。
若覺得邏輯不夠清晰, 請在評論中隨便踐踏我!!!
二、特性
將一個記錄插入到一個已排序的隊列當中, 使整個序列在插入之後, 任然有序;
插入位置的確定方法是將待插入的數據與已區分中各記錄的值進行比較;
三、實現方法
假如我們現在有一個數組 'numbers' ;
int numbers[] = new int[]{2,4,8,1,0,9,6} ;
我們現在需要將數組中的數據以從小到大的方式進行排序;
邏輯思路: 在排序中, 我們需要以數組下標爲1的數值, 依次向前面的數據進行比較, 直到【當前下標處-1】的位置數據小於【當前下標處】的數據。
那麼, 我們的邏輯就已經完成。
插入排序算法較爲簡單, 以上就是他的工作原理步驟:
public static void main(String[] strs) {
int[] numbers = new int[] { 2, 8, 1, 3, 6, 9, 0 };
for (int i = 1; i < numbers.length; i++) {
int j = i;
while (j > 0 && numbers[j] < numbers[j - 1]) {
int temp = numbers[j];
numbers[j] = numbers[j - 1];
numbers[j - 1] = temp;
j--;
}
}
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i]+" ");
}
}
四、源代碼解釋
我們進行了第一層for循環 , 目的是爲了保證該數組的每一處下標對應的數據都能夠被當前算法給作用到。
j變量是爲了能夠處理 若前面的幾處變量都形成條件時做的下標數值比較。 因爲不能夠直接操作i變量, 所以通過j來實現依次向前比較。
第二層while循環是用來兩個下標的數據進行替換的邏輯處理。
j--; 的功能就是j變量的處理效果了。
while來表達的是, 如果前一處下標已經大於當前操作的下標數據了, 那麼將自動退出, 證明該序列已經正確。 進行下一個i下標數據比較。