Home  >  Article  >  Backend Development  >  Some commonly used sorting methods for js arrays

Some commonly used sorting methods for js arrays

小云云
小云云Original
2018-03-15 15:41:021703browse

This article mainly shares with you some commonly used sorting methods for js arrays, including bubble sort, quick sort, insertion sort, etc. I hope it can help you.

1. Bubble sorting (from back to front)

var array = [1,4,-8,-3,6,12,9,8];function sort(arr){    for(var j=0;j<arr.length-1;j++){    //两两比较,如果前一个比后一个大,则交换位置。
       for(var i=0;i<arr.length-1-j;i++){            if(arr[i]>arr[i+1]){                var temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        } 
    }
}
sort(array);
document.write(array);

(1) Compare adjacent elements. If the first one is larger than the second one, swap their positions.

(2) Do the same work for each pair of adjacent elements, from the first pair at the beginning to the last pair at the end. At this point, the last element should be the largest number.

(3) Repeat the above steps for all elements except the last one.

(4) Continue to repeat the above steps for fewer and fewer elements each time until there is no pair of numbers to compare.

2. Quick sorting: recursive thinking, fast sorting on both sides, improvement of bubble sorting

var array = [1,4,-8,-3,6,12,9,8];
function quickSort(arr){//如果数组长度小于等于1,则返回数组本身
   if(arr.length<=1){        return arr;
   }    //定义中间值的索引
   var index = Math.floor(arr.length/2);    //取到中间值
   var temp = arr.splice(index,1);    //定义左右部分数组
   var left = [];    var right = [];    for(var i=0;i<arr.length;i++){    //如果元素比中间值小,那么放在左边,否则放右边
       if(arr[i]<temp){            left.push(arr[i]);
       }else{            right.push(arr[i]);
       }
   }    return quickSort(left).concat(temp,quickSort(right));
}
document.write(quickSort(array));

Math.floor(x) method is rounded down to return the nearest integer less than or equal to x.

The splice(index,num,item) method adds items to the array or deletes items from the array and returns the deleted item.

index is an integer, the location of the operated item (required)

num is an integer, the number of items to be deleted, if 0, means not to delete (required)

item is a new item added to the array, it can be multiple (optional)

The push() method adds one or more new items to the end of the array and returns the length of the new array

The concat() method connects two or more arrays without changing the original Array, return a new array

3. Insertion sort

var array = [1,4,-8,-3,6,12,9,8];function insertSort(arr){
//假设第0元素是有序序列,第1元素之后是无序的序列。从第1元素开始依次将无序序列的元素插入到有序序列中
   for(var i=1; i<arr.length;i++){        if(arr[i]<arr[i-1]){            //取出无序序列中需要插入的第i个元素
           var temp = arr[i];            //定义有序中的最后一个位置
           var j = i-1;
           arr[i] = arr[j];            //比较大小,找到插入的位置
           while(j>=0&&temp<arr[j]){
               arr[j+1] = arr[j];
               j--;
           };            //插入
           arr[j+1] = temp;
       }
   }
 }
insertSort(array)
document.write(array);

(1) Starting from the first element, the element can be considered to have Sorted

(2) Take out the next element and scan

in the sorted element sequence (3) If the element (already Sorting) is greater than the new element, move the element to the next position

(4) Repeat step 3 until you find the position where the sorted element is less than or equal to the new element

(5) Insert the new element into the next position

(6) Repeat step 2

4. Select sorting

var array = [1,4,-8,-3,6,12,9,8];function selectSort(arr){    for(var i=0;i<arr.length;i++){        //设置当前范围最小值和索引
       var min = arr[i];        var minIndex = i;        //在该范围选出最小值
       for(var j=i+1;j<arr.length;j++){            if(min>arr[j]){
               min = arr[j];
               minIndex = j;
           }
       }        //将最小值插入,并将原来位置的最小值删除
       arr.splice(i,0,min);
       arr.splice(minIndex+1,1);
   }
}
selectSort(array);
document.write(array);

(1) Find the smallest (large) element

in the unsorted sequence (2) and store it in sorting The starting position of the sequence

(3) Then, continue to find the smallest (large) element from the remaining unsorted elements

(4 ) and placed at the end of the sorted sequence.

(5) and so on

The above is the detailed content of Some commonly used sorting methods for js arrays. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn