持續更新我對演算法理解

2021-10-07 08:29:26 字數 1104 閱讀 8054

一、氣泡排序:兩兩比較,大的放後面,小的放前面;使用兩個for迴圈,乙個數就不用比了,所以第乙個for迴圈遍歷次數n-1次,第二個for比較次數n 

// 氣泡排序:思路=》兩兩交換,大的放後面,小的放前面,第一次排序後最大值已在陣列末尾

// **實現:兩個for迴圈,外層迴圈控制排序的趟數,內層迴圈控制比較次數。每趟過後比較次數都應該減一

function sort (arr,n)}}

return arr

}let arr = [3,2,5,7,9,4,1,6]

let n = arr.length

console.log(sort(arr,n));

// [1, 2, 3, 4, 5, 6, 7, 9]

function sort (arr,n)

}temp=arr[max]

arr[max] = arr[n-1-i]

arr[n-1-i]=temp

}return arr

}let arr1 = [3,2,5,7,9,4,1,6,8]

let n1 = arr1.length

console.log(sort(arr1,n1));

//[1, 2, 3, 4, 5, 6, 7, 8, 9]

三、快速排序 :取乙個數作為基準值[以中間項為基準值],小於這個基準數的放在左邊,大於基準值的放在右邊,遞迴

三種實現的方式,參考如下

/*大致分三步:

1、找基準(一般是以中間項為基準)

2、遍歷陣列,小於基準的放在left,大於基準的放在right

3、遞迴

*/ function quicksort(arr)

let pointindex = math.floor(arr.length/2) //基準值

let left =

let right =

let point = arr.splice(pointindex,1)[0] //把基準從原來的陣列中刪除

for(let i=0;i插入排序

歸併排序

堆排序希爾排序

基數排序

遞迴

我對遺傳演算法理解

1 始祖值 2 隨機交叉 3 優秀標準 4 精英策略 5 收斂 始祖值,a 1 echo print r a echo 雜湊值 any array 2,4,7,8,10,12,51,32,11 echo print r any echo 交叉並啟動精英策略,假設後代的和越大越優秀 foreach a...

我對遺傳演算法理解

1 始祖值 2 隨機交叉 3 優秀標準 4 精英策略 5 收斂 始祖值,a 1 echo print r a echo 雜湊值 any array 2,4,7,8,10,12,51,32,11 echo print r any echo 交叉並啟動精英策略,假設後代的和越大越優秀 foreach a...

對KMP演算法理解

kmp演算法是一種在乙個字串中匹配另乙個字串的高效演算法。簡單字元的匹配演算法時間複雜度為o m n kmp演算法的時間複雜度為o m n 下面是我在vs上的求next值驗證演算法。include abc.h include using namespace std int main unsigned...