一、氣泡排序:兩兩比較,大的放後面,小的放前面;使用兩個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...