<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      導航

      冒泡排序(Bubble Sort)

      平均時間復雜度:O(N^2)

      最好時間復雜度:O(N)

      最壞時間復雜度:O(N^2)

      空間復雜度:O(1)

      • 冒泡排序是一種計算機科學領域的較簡單的排序算法。
      • 它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。
      • 走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
      • 這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
      void bubbleSort(int[] array) {
          int temp;
          for (int i = 0; i < array.length - 1; i++) {//從第0個元素開始,循環數組元素個數-1次
              for (int j = 0; j < array.length - 1 - i; j++) {
                  //每次都和之后的一個元素進行對比
                  if (array[j] > array[j + 1]) {
                      //如果當前元素大于之后的元素,則交換兩個元素
                      temp = array[j];
                      array[j] = array[j + 1];
                      array[j + 1] = temp;
                  }
              }
              //每輪結束數組剩余數中的最大(最小)的數已經交換到 array.length - i 的索引處
              //第一輪是:  array.length - 0
              //第二輪是:  array.length - 1
              //.....
          }
      }
      

      如果某一次循環中,一次也沒有交換數據,則說明該數組已經是一個有序數組

      優化代碼:

      void bubbleSort(int[] array) {
          for (int i = 0; i < array.length - 1; i++) {//從第0個元素開始,循環數組元素個數-1次
          	boolean flag = false;
              for (int j = 0; j < array.length - 1 - i; j++) {
                  //每次都和之后的一個元素進行對比
                  if (array[j] > array[j + 1]) {
                      //如果當前元素大于之后的元素,則交換兩個元素
                      int temp = array[j];
                      array[j] = array[j + 1];
                      array[j + 1] = temp;
                      
                      flag = true;
                  }
              }
              //每輪結束數組剩余數中的最大(最小)的數已經交換到 array.length - i 的索引處
              //第一輪是:  array.length - 0
              //第二輪是:  array.length - 1
              //.....
              
              if (!flag) {
                  break;//如果當前循環沒有交換任意兩個元素,則說明排序已完成,可以直接結束
              }
          }
      }
      

      選擇排序(Selection sort)

      平均時間復雜度:O(N^2)

      最好時間復雜度:O(N^2)

      最壞時間復雜度:O(N^2)

      空間復雜度:O(1)

      • 選擇排序是一種簡單直觀的排序算法。它的工作原理是:
      • 第一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然后再從剩余的未排序元素中尋找到最小(大)元素,然后放到已排序的序列的末尾。
      • 以此類推,直到全部待排序的數據元素的個數為零。選擇排序是不穩定的排序方法。
      void selectSort(int[] array) {
          for (int i = 0; i < array.length - 1; i++) {//從第0個元素開始
              int index = i;
              int num = array[i];
              for (int j = i + 1; j < array.length; j++) {
                  //每次都和之后所有的數組元素進行對比
                  if (array[j] < num) { 
                      //如果當前對比的元素大于之前的元素,則把當前元素的值替換之前的元素值,進行下一輪的比較
                      //直至找到數組剩余數據中最小的值
                      num = array[j];
                      index = j;
                  }
              }
      
              //找到最小的元素值位置,進行交換
              int temp = array[i];
              array[i] = array[index];
              array[index] = temp;
          }
      }
      

      插入排序

      平均時間復雜度:O(N^2)

      最好時間復雜度:O(N)

      最壞時間復雜度:O(N^2)

      空間復雜度:O(1)

      • 一般也被稱為直接插入排序。對于少量元素的排序,它是一個有效的算法

      • 插入排序是一種最簡單的排序方法,它的基本思想是將一個記錄插入到已經排好序的有序表中,從而一個新的、記錄數增1的有序表。

      • 在其實現過程使用雙層循環,外層循環對除了第一個元素之外的所有元素,內層循環對當前元素前面有序表進行待插入位置查找,并進行移動

      • 形象的比喻就是打撲克牌的時候發牌階段,從第二張牌開始就和之前發的牌比較,找到合適的位置,插入。之后的牌則依次后移。

      //從第1個元素開始循環,第0個元素默認是有序數組
      for (int i = 1; i < array.length; i++) {
          int num = array[i];
          int index = i - 1;
          while (index >= 0 && num < array[index]) {
              //和之前的有序表進行比較,如果大于之前的元素,則前一個元素向后進行移位,直到找到合適的位置結束
              array[index + 1] = array[index];
              index--;
          }
          array[index + 1] = num;//把當前元素插入到找到的位置的后一位
      }
      

      時間統計

      int[] 數組長度:10000 十次排序:

      冒泡排序 最短104ms 最長167ms 平均126.4ms
      選擇排序 最短13ms 最長43ms 平均30.4ms
      插入排序 最短11ms 最長18ms 平均12.4ms

      int[] 數組長度:50000 十次排序:

      冒泡排序 最短3498ms 最長3661ms 平均3573.9ms
      選擇排序 最短365ms 最長408ms 平均373.2ms
      插入排序 最短288ms 最長303ms 平均292.8ms

      int[] 數組長度:100000 十次排序:

      冒泡排序 最短14463ms 最長14596ms 平均14502.1ms
      選擇排序 最短1410ms 最長1441ms 平均1417.4ms
      插入排序 最短1162ms 最長1181ms 平均1168.0ms

      主站蜘蛛池模板: 日韩V欧美V中文在线| 国产一级av在线播放| 免费国产精品视频在线| 天堂资源国产老熟女在线| 中文字幕日韩视频欧美一区| 惠水县| 九九热精品免费在线视频| 国产丰满乱子伦无码专区| 国产毛a片啊久久久久久保和丸| 国产高清亚洲一区亚洲二区| 国产精品多p对白交换绿帽| 精品无码久久久久久久动漫 | 国产成人精品成人a在线观看| av中文字幕在线二区| 午夜成人精品福利网站在线观看 | 加勒比无码人妻东京热| 房东老头揉捏吃我奶头影片| 精品视频国产狼友视频| 日韩丝袜亚洲国产欧美一区| 欧美激情 亚洲 在线| 偷偷色噜狠狠狠狠的777米奇| 国产精品一区二区三区专区| 92精品国产自产在线观看481页| 蜜臀av无码一区二区三区| 香港日本三级亚洲三级| 成年在线观看免费人视频| 国产免费无遮挡吸奶头视频| 久久中文字幕av第二页| 夜夜添无码试看一区二区三区| 欧美高清freexxxx性| 国产精品午夜福利视频| 男女一边摸一边做爽爽| 亚洲精品一区二区三区色| 国产日韩综合av在线| 白银市| 亚欧洲乱码视频在线专区| 国内自拍av在线免费| 91人妻熟妇在线视频| 亚洲精品沙发午睡系列| 久久99国产一区二区三区| 国产线播放免费人成视频播放|