一;冒泡排序:相邻两元素之间两两比较,比较出大值进行赋值互换,再依次与相邻的元素比较,层层递进 #互换元素位置,相互赋值。
<script type="text/javascript">
var my_num = [1,3,9,0,40]
function num(arr){
for(var i =0; i< arr.length-1;i++){
for(var j = 0;j < arr.length-1;j++){
if(arr[j]>arr[j+1]){
var tmpe = arr[j];
arr[j] = arr[j+1];
arr[j+1]= tmpe;
}
}
}return arr;
}
document.write(num(my_num));
</script>
二,选择排序,先定义一个元素的最大值与最小值,拿 每个元素与最值比较,取大值放到元素最右端,层 层比较,#互换元素下标位置,再赋值,所以比冒泡排序的效率高,
<script type="text/javascript">
var my_num=[1,3,9,0,40]
function num (arr){
for(var i = 0;i < arr.length-1;i++){
var maxone = i;
for(var j = i;j<arr.length;j++){
if(arr[j]<arr[maxone]){
maxone=j;
var temp = arr[i];
arr[i]=arr[maxone];
arr[maxone]=temp;
}
}
}
return arr;
}
document.write(num(my_num));
</script>
三;快排
大致分三步:
1、找基准(一般是以中间项为基准)
2、遍历数组,小于基准的放在left,大于基准的放在right
3、递归
function quickSort(arr){
//如果数组<=1,则直接返回
if(arr.length<=1){return arr;}
var pivotIndex=Math.floor(arr.length/2);
//找基准,并把基准从原数组删除
var pivot=arr.splice(pivotIndex,1)[0];
//定义左右数组
var left=[];
var right=[];
//比基准小的放在left,比基准大的放在right
for(var i=0;i<arr.length;i++){
if(arr[i]<=pivot){
left.push(arr[i]);
}
else{
right.push(arr[i]);
}
}
//递归
return quickSort(left).concat([pivot],quickSort(right));
}