美文网首页
排序算法

排序算法

作者: 迪爷 | 来源:发表于2017-03-21 22:00 被阅读0次

    O(n*n)

    插入排序

    首先是位置1上的数字与位置0上的数字比较,把小的放在前面;
    然后是位置2上的数字与位置1到位置0上的数字比较,把小的放在前面;
    然后是位置3上的数字与位置2到位置0上的数字比较,把小的放在前面;
    。。。。。。。

    import java.util.*;
    
    public class InsertionSort {
        public int[] insertionSort(int[] A, int n) {
            // write code here
            int temp;
            for(int i=1; i< n;i++ ){
                for (int j=i;j> 0; j--){
                    if(A[j] < A[j-1]){
                        temp = A[j];
                        A[j] = A[j-1];
                        A[j-1] = temp;
                    }
                }
            }
            return A;
        }
    }
    

    位置k上的数字与它前面的值进行比较,直到它前面的数<=它,就把它插入到当前位置

    冒泡排序

    public static void bubbleSort(int[] numArray) {
    
        int n = numArray.length;
        int temp = 0;
    
        for (int i = 0; i < n; i++) {
            for (int j = 1; j < (n - i); j++) {
    
                if (numArray[j - 1] > numArray[j]) {
                    temp = numArray[j - 1];
                    numArray[j - 1] = numArray[j];
                    numArray[j] = temp;
                }
    
            }
        }
    }
    

    选择排序

    在位置0-n 上,选择一个最小的数放在位置0上;

    在位置1-n上,选择一个最小的数放在位置1上;

    js 实现

    function swap(items, firstIndex, secondIndex){
      var temp = items[firstIndex];
      items[firstIndex] = items[secondIndex];
      items[secondIndex] = temp;
    };
    
    function selectionSort(){
      let items = [...document.querySelectorAll('.num-queue span')].map(num => +num.textContent);
      let len = items.length, min;
    
      for (i = 0; i < len; i++){
        min = i;
        for(j = i + 1; j < len; j++){
          if(items[j] < items[min]){
            min = j;
          }
        }
        if(i != min){
          swap(items, i, min);
        }
      }
      return items;
    };
    
    import java.util.*;
    
    public class SelectionSort {
        public int[] selectionSort(int[] A, int n) {
            // write code here
            int min;
            int temp = 0;
            for( int i = 0;i < n; i++ ){
                 min = i;
                for( int j= i+1;j< n;j++){
                    if(A[j]< A[min]){
                        min = j;
                    }
                }
                if(min != i){
                    temp = A[i];
                    A[i] = A[min];
                    A[min] = temp;
                }
            }
            return A;
        }
    }
    

    相关文章

      网友评论

          本文标题:排序算法

          本文链接:https://www.haomeiwen.com/subject/xdqnnttx.html