Java --- 8 Три Ранжирование

1: Пузырь Сортировка (может быть улучшена)

  Определить флаг = ложь; если будет обмен флаг = TRUE; сортировка после каждого определения   

     для (INT I = 0; J <arr.length; я ++) {        

      для (Int J = 0, J <. -I-arr.length 1; j ++) { 
        ЕСЛИ (ARR [Дж]> ARR {[J + 1.]
          ТЕМП = ARR [Дж]; // если последний больше , чем предыдущий
          обр [J] = обр [J + 1]; // обменены
          обр [J + 1] = темп ; // меченый множество истина
          в флаг = истина;
         }
      } // после каждого раунда определяется , является ли обмен ,
      если (флаг == FALSE) {// Если это не обменены на пропускаемого
         BREAK;
      } // Если еще {обмен,
         в флаг ложь =; // флаг сброса
      }
    }

2: выбор Сортировка каждый выбирает наименьшее , использовать обозначение мин, и на этот раз , чтобы найти наименьший индекс minIndex,   
    для (INT I = 0; я <arr.length, я ++) {   
      INT minIndex = I; // принимает минимальное значение в мин,
      INT мин = обр [I]; // индекс , соответствующий битовый minIndex
      для (интермедиат J = 1;. J <arr.length; j ++) {// смотрел на спине ,
        если (мин> обр [J] ) {// Если есть обр [J] меньше , чем предполагается мин
          мин = обр [J]; // для выполнения этого минимального мин обр [J]
          minIndex = J; // затем маркировки J
        }
      }
      IF (minIndex ! = я) {// если минимум не первый найденный впервые
        обр [minIndex] = обр [I ]; // число будет минимальное значение , найденное в первый раз с помощью первой крышки
        обр [ я] = мин; // первый обр [0] перезаписывается мин, переключение фактически
      }
    }
3: сортировка вставкой , каждый раз ищет число от задней части к передней вставляется в упорядоченной последовательности.
    для (INT I = 1; я. <arr.length, я ++) {  
      для (INT I = J, J> 0, J -) {
        ЕСЛИ (ARR [Дж]> ARR [. -J 1]) {
          ТЕМП = ARR [Дж];
          [. -J 1] обр [Дж] = обр;
          обр [-J 1. Обр] = [J];
         }
      }
    }
   Примечание: первый цикл , когда г = 1, J = 1, регулируя обр [J] и [обр J-1] является первым числом, и позиционное соотношение между вторым номером,
      второй цикл, когда я = 2, J = 2, корректировка обр [J] и ARR [J-1] является третьим количество и взаимное расположение между вторым числом
                J = 1,
регулируя обр [J] и обр [J-1] является вторым числом, взаимное положение между первым числом и
4: Хилл сортировка, идея: номер два делится на массив из двух массивов постепенно,
  для (INT = arr.length GAP / 2; GAP> 0; GAP = GAP / 2) {// GAP постепенно Двоичный массив
    для (INT I = пробел; я <arr.length; я ++) {// затем после первого массива: разрыв начала до конца самым
      для (Int J = I зазораСравнение размер и положениесоответствующее последнему массива,
        ЕСЛИ (ARR [Дж]> ARR [GAP J +]) {// Еслитак, то переключатель
          ТЕМП = ARR [Дж];
          ARR [Дж] = ARR [Дж GAP +];
          ARR [Дж GAP +] = TEMP;
        }                      
      }
    }
  8,7,6,5,4,3,2,1 >> Длина arr.length = 7 =
  Первый раунд: щелевые = 4, I = 4--7 , J = 0--3, условия определения после обмена результатами. 4,3,2,1,8,7,6,5
  второй раунд: GAP = 2, I = 2--7,
          I = 2 Время: J = 0, 2 и 4 для обмена, после обмена следующим образом : 2, 3,4,1,8,7,6,5
          I = 3 , когда: J = 1,0 ,
             J = 1, 3 и обмен 1, после того , как обмен: 2,1,4,3,8,7,6, . 5
             J = 0, то условие не выполнено, и 2 не могут быть обменены 4.
          I = 4 , когда:. J = 2,1,0
             J = 2, переключение ARR [J] и обр [J + пробел] установлено , что условие не выполнено, не может быть обменен
             J = 1, обмен ARR [1] и обры [3], обнаружено не выполнено
             J = 0, переключения обр [0] и обры [2], было установлено , не удовлетворяет
          I = 5: J = 3,2,1,0
             J = 3, переключение обр [3] и обр [5], обнаружено , что не удовлетворяет условию не может быть обменен
             J = 2, переключение обр [2] и обр [4], мы обнаружили , что условие не выполнено, не может быть заменен
             . , , , , , , ,
         из I = 6: J = 4,3,2,1,0
             J = 4, обмен обр [4] и обр [6], 8 больше , чем 6, после обмена: 2,1,4,3,6,7,8,5
             J = 3,2,1,0 не удовлетворяет набор из двух больших , чем бывший последнего
         I = 7 , когда: 5,4,3,2,1,0 J =
             . J = 2,1,4,3,6,5,8,7 5
             . J = 4 , 3,2,1,0 волна не удовлетворяет набор из двух больших , чем бывших последнего
  третьего раунда: зазор = 1, г = 1--7    
         этот принцип становится обменом каждого смежных два, Большой бывший чем последний обмен
         = 1 , когда: у = 0, обр [0 ] и обр [1] 1,2,4,3,6,5,8,7 ,
         когда я = 2: J = 1,0 обр [1] и обр [2] 2 меньше , чем 4, не могут быть обменены   
 5: быстрая сортировка, 
  массив в соответствии с sratrnum, разделенная на startnum больше , чем, меньше , чем startnum до и после массивов ,
  а затем startnum заменил перед массивом последней (или первой после массива), то в соответствии с новой заменой
  рекурсивная быстрой сортировки
  государственной статической силы быстрой сортировки (INT [] обр, Int влево, вправо Int) {// передача массива, а начальный индекс
    INT I = слева; // нота начального индекса,
    Int J = вправо;
    ИНТ темп; // определить темп для обмена
    ИНТ startnum = обр [влево] // определим StartNum
    IF (слева> справа) {возвращение;} // если
    это время (I <J) {
      это время (I <J && ARR [I] <startnum) {я ++;} // найти право от startnum меньше , чем в
      то время (я <J && обр [ J]> stratnum); startnum найдено слева больше , чем {J} //
      TEMP = ARR [I]; ARR [I] = обр [J] ; обр [J] = темп; // обмен
    }
    ARR ARR = [I] , [влево]; ARR [I] = startnum; // изменить вес startnum
    быстрая сортировка (ARR, I + 1, справа.);
    быстрая сортировка (ARR, слева, J- 1.);
  }
6: сортировка слияние.
7: Radix сортировка (блочная сортировка)
  государственный статическая сила TongSort (INT [] ARR) {
  INT макс = ARR [0];
  для (INT I = 1;. Я <arr.length, я ++) {
    ЕСЛИ (ARR [I]> макс) = тах {ARR [I];} // найти максимальное число массива
  INT MaxLength = . (макс + " ") длина ; // максимальное число есть число несколько
  INT [] [] bukcet = INT новые [10] [arr.length]; // хранить один и ту же ванну десять мантиссы
  INT [] bukcetcounts = новые INT [10]; // количество каждого шага на ванне положить внутрь
      bucketcounts [0] = 1 номер 1 обозначает разгрузочный конец бака до 0
  для (INT I = 0, п = 1; г <MaxLength; я ++, п = п * 10) {// начинают делить каждое число 10/100/1000
    для (Int J = 0, J <arr.length; j ++) {// начать каждое число, оно делится на 10 , чтобы получить / 100/1000 мантиссы
      INT digitOfElement = обр [J] / п% 10; // последовательно получены мантиссы
      ковшеобразный [digitOfElement] [bucketcounts [digitOfElement]] = ARR [J];
        // предыдущего шаг, сначала мы должны ведро [10] [arr.length] десяти баррелей, если полученные мантиссы 123. 3,
        // ведро [digitOfElement ] [bucketcounts [digitOfElement]]
        // ковш [digitOfElement] [] указывает на конец которого число являются все из arr.lengt бака 3,
        // bucketcounts [digitOfElement] представляет собой вертикальное положение этой строки arr.length ванны
        // bucketcounts количество [digitOfElement] ++ презентационные элементы
      bucketcounts [digitOfElements] ++;
    }
    INT индекс = 0;    
    для (INT = 0 к, к <bucketcounts.length, K ++) {// удалить элементы ванночка,
      ЕСЛИ (bucketcounts ! [K] = 0) {
        для (INT = 0 L, L <bucketcounts [K], L ++) {
          ARR [индекс] = ковш [K] [L];
      }
    }
    bucketcount [K] = 0;
  }

  

рекомендация

отwww.cnblogs.com/ytfantey/p/11613747.html