演算法題2 插序演算法

2021-10-03 13:23:12 字數 1112 閱讀 2863

首先分析插序演算法的原理:

舉例:int ints = ;

for迴圈進行遍歷,判斷相鄰兩個值得大小,如果前面的小於後面的,就開始進行階迴圈。

即9,3時,也就是i迴圈

for

(int i =

1; i <= ints.length-

1; i++

)}

階迴圈時,從0,1,。。。4,9,進行迴圈,判斷其中j位上的值比i位上的值大的那一位。

for

(int i =

1; i <= ints.length-

1; i++

)}

這時需要找到介於階迴圈中的j ,j 位的值比i位的值大。

需要交換的是j位於i位;j與i位之間的需要後移。先後移即i-1 移到i,直到j+1 移到j+2;最後交換j與i位。

for

(int i =

1; i <= ints.length-

1; i++

) ints[j]

=temp;}}

}}

最後寫成方法:

static

int[

]insertion

(int

ints)

ints[j]

=temp;}}

}}return ints;

}

還沒有結束,檢查方法中冗餘的計算,發現可以中斷一些後面沒用的迴圈,不是i,也不是k,而是j.

static

int[

]insertion

(int

ints)

ints[j]

=temp;

break;}

}}}return ints;

}

最後進一步優化,減少一步迴圈

static

int[

]insertion2

(int

ints)}}

return ints;

}

leetcode刷題 演算法(2) 排序演算法(下)

排序演算法總結 2.11 kth元素 2.12 幾種方法,關鍵 堆 快排 還不是很熟練 2.出現頻率最多的 k 個元素 桶排序,未作出 3.按照字元出現次數對字串排序 同上ok 4.按顏色進行排序 ok215.kth largest element in an array medium 1.採用庫函...

經典演算法題2 遞迴和字典序的全排列演算法

1,遞迴的全排列演算法 以abcd為例 對於abcd,首先以第一位的字元分為四類 1 以a為第一位 abcd 固定a的位置,a後面跟著bcd的全排列 2 以b為第一位 bacd 即交換第乙個字元a和b的位置 固定b的位置,b後面跟著acd的全排列 3 以c為第一位 cbad 即交換第乙個字元a和c的...

演算法基礎題(2)

程式5 題目 利用條件運算子的巢狀來完成此題 學習成績 90分的同學用a表示,60 89分之間的用b表示,60分以下的用c表示。1.程式分析 a b a b這是條件運算子的基本例子。程式6 題目 輸入兩個正整數m和n,求其最大公約數和最小公倍數。1.程式分析 利用輾除法。程式7 題目 輸入一行字元,...