演算法的效率表示。
簡單排序(都以公升序為例)
氣泡排序,選擇排序
2,選擇排序法
3,插入排序
不同時間複雜度的排序,首先看時間複雜度;相同時間複雜度情況下,看比較次數。
效率,插入排序》選擇排序》氣泡排序;所有簡單排序都是穩定的。
高階排序
2,歸併排序
3,快速排序
//先封裝乙個列表封裝資料
function
arraylist()
arraylist.prototype.
tostring
=function()
arraylist.prototype.
swap
=function
(a, b)
//排序演算法,公升序
//簡單排序
//1,氣泡排序
arraylist.prototype.
bubblesort
=function()
}}return
this
//返回物件,以方便繼續呼叫物件方法
}//2,選擇排序
arraylist.prototype.
selectionsort
=function()
}this
.swap
(i, min)
//真實最小值下標,找到才交換,所以交換次數減少
}return
this
}//3,插入排序
arraylist.prototype.
insertionsort
=function()
//把temp插入到正確位置
this
.array[j]
= temp
}return
this
}//高階排序
//1,希爾排序
arraylist.prototype.
shellsort
=function()
this
.array[j]
= temp
}gap = math.
floor
(gap /2)
}return
this
}//2,歸併排序
arraylist.prototype.
mergesort
=function()
//拆分,遞迴實現,拆分不時間產生零時陣列,只是計算好位置
arraylist.prototype.
split
=function
(left, right)
//合併
arraylist.prototype.
merge
=function
(left, center, right)
else
this
.array[k]
= arr1[i]
< arr2[j]
? arr1[i++
]: arr2[j++
]//合併判斷賦值和變數累加
}return
this
}//3,快速排序
// 選擇樞紐
arraylist.prototype.
pivot
=function
(left, right)if(
this
.array[center]
>
this
.array[right])if
(this
.array[left]
>
this
.array[center]
)// 3.將center移動到right - 1的位置;這樣比較操作可以減少乙個
this
.swap
(center, right -1)
// 4.返回pivot
return
this
.array[right -1]
//後面要以這個值為基準進行比較。
} arraylist.prototype.
quicksort
=function()
arraylist.prototype.
quicksortrec
=function
(left, right)
while
(this
.array[j]
> pivot)
if(i < j)
else
}//3,遞迴呼叫
//這裡時i-1與i取決於i和j的初始值的設定;如果設定是j=right-1,那麼右區間的就是從i+開始
this
.quicksortrec
(left, i-1)
//左邊設定完畢
return
this
.quicksortrec
(i, right)
//右邊也設定完畢,返回該物件}}
let list =
newarraylist()
list.
insert(66
) list.
insert(88
) list.
insert(12
) list.
insert(87
) list.
insert
(100
) list.
insert(5
) list.
insert
(566
) list.
insert(23
) list.
insert(99
)//所有方法均返回設定好的物件,以便於統一呼叫tostring方法以供展示
console.
log(list.
tostring()
)//66-88-12-87-100-566-23
氣泡排序12-23-66-87-88-99-100-566
選擇排序
插入排序
希爾排序
歸併排序
console.
log(list.
quicksort()
.tostring()
)//快速排序
資料結構與演算法 排序 一
每次比較兩個相鄰的元素,如果它們的順序錯誤就把它們交換過來。核心是雙重巢狀迴圈,時間複雜度是o n n 簡單選擇排序就是通過n i次關鍵字的比較,從n i 1個記錄中選出關鍵字最小的記錄,並和第i 1 i n 個記錄交換。演算法的時間複雜度是o n n 但是交換移動資料次數比較小,效能優於氣泡排序。...
演算法與資料結構(一) 快速排序
原理 在序列中找乙個基準數,然後,通過一定的次序調整 如交換位置或不斷填坑的方式 使得這個基準數的位置前面的數都小於基準數,後面的數都大於這個基準數,那麼,就找到了這個基準數的位置,然後,不斷地遞迴這個過程。演算法步驟 1.找乙個基準數,一般為待排序序列左邊的第乙個,並且把這個位置作為第乙個坑,並儲...
演算法與資料結構之排序一
1 選擇排序 2 插入排序 3 氣泡排序 4 希爾排序 插入排序的改進 一 選擇排序 def selectionsort arr for i in range len arr minindex i for j in range i,len arr if arr j arr minindex mini...