從前到後兩兩比較,把較大的換到後面,直到最後。
function bubblesort(arr) }}
return arr;
}
在未排序佇列中找到最小或最大元素,和第一位數交換。然後找剩下的未排序的最小或最大元素和第二位數交換…
function selectionsort(arr)
}temp = arr[i];
arr[i] = arr[minindex];
arr[minindex] = temp;
}return arr;
}
將未排序陣列從前到後依次取出和已排序的陣列比較,如果比後一位小就將該元素往後移一位直到比前一位大就插入該位置。
function insertionsort(arr)
arr[j+1]=current;
}return arr;
}
把待排序序列分割成若干子串行分別進行插入排序
function shellsort(arr)
for (gap; gap > 0; gap = math.floor(gap / 3))
arr[j + gap] = temp;}}
return arr;
}
把陣列分成n/2個子序列,先對每個子串行排序
然後合併兩個子串行再排序。直到最後二合一。
排序的過程就是把子序列先放在暫存數列中排序,拍完之後放回原序列。
function mergesort(arr)
var middle = math.floor(len / 2),
left = arr.slice(0, middle),
right = arr.slice(middle);
return merge(mergesort(left), mergesort(right));
}function merge(left, right)
else
}while (left.length)
result.push(left.shift());
while (right.length)
result.push(right.shift());
return result;
}
從數列中找乙個元素作為基準,然後把所有比基準小的放左邊,大的放右邊。
然後分別對左右兩個子串行重複上述操作。直到所有基準都排好。
第一種方法
function swap(arr,a,b)
function partition(arr,left,right)
第二種方法,需要額外空間
function quicksort(arr)
var left=;
var right=;
var p=arr[0];
for(var i=1; i堆是一種完全二叉樹,每個節點都大於或小於他的兩個子節點。
將待排序序列構造成乙個大頂堆,此時,整個序列的最大值就是堆頂的根節點。將其與末尾元素進行交換,此時末尾就為最大值。然後將剩餘n-1個元素重新構造成乙個堆,這樣會得到n個元素的次小值。如此反覆執行,便能得到乙個有序序列了。
var len;
function buildmaxheap(arr) }
function heapify(arr, i)
if (right < len && arr[right] > arr[largest])
if (largest != i) }
function swap(arr, i, j)
function heapsort(arr)
return arr;
}
javascript演算法排序
一 氣泡排序 思路 1.依次比較相鄰的兩個數,如果第乙個比第二個小,則位置不變,如果第乙個比第二個大,則位置調換,一輪下來,最後乙個是最大的數 2.對除了最後乙個之外的數重複第一步,直到只剩乙個數 氣泡排序 var arr 1,5,3,9,4 for var i arr.length 1 i 0 i...
javascript排序 查詢演算法大全
在pptv的實習結束了,忙著找工作的事,順便把資料結構的那本書重新複習了一遍。為了加深印象,特意把裡面的常用的排序 查詢演算法用js寫了一遍 具體的例項在我的github上,大家可以訪問的 js sort.html檔案 js插入排序 function insertsort arr else retu...
經典演算法 快速排序 javascript
1.在資料集之中,找乙個基準點 2.建立兩個陣列,分別儲存左邊和右邊的陣列 3.利用遞迴進行下次比較 方式一 array.prototype.quick sort function 方式二 var quicksort2 function array else return false 使用時也可以直...