選択ソート、複雑性O(n²)
パッケージcom.example.demo。 輸入org.junit.Test; / ** *选择排序 * @author zhzh.yin * * / publicクラスHTest { @Test 公共ボイドのtestMethod(){ 整数[] numList = {1,2,2,2,1,4,5,2,5 、3,9,6}。 以下のために(INT i = 0; iは<numList.length-1; iは++){ int型の最大値= numList [I]。 用(int型J = I + 1、J <numList.lengthあり、j ++){ (numList [i]が<numList [J]){もし 最大= numList [J]。 numList [J] = numList [I]。 numList [i]は=最大。 } } } (int型NUM:numList)用{ System.out.print(numList [NUM] +」「)。 } } }
バブルソートの複雑さO(nlogn)
パッケージcom.example.demo。 輸入org.junit.Test; / ** *冒泡排序 * @author zhzh.yin * * / publicクラスFTEST { @Test 公共ボイドのtestMethod(){ 整数[] numList = {1,2,1,1,1,8,3,5、 1}。 IF(numList.length == 1){ するSystem.out.println( " - 1")。 }そうであれば(numList.length == 2){ 文字列= ""; System.out.println( numList [1]> numList [2]? numList [1] + "" + numList [0]:numList.toString());; } int型温度= 0。 以下のために(INT i = 0; I <numList.length-1; iは++){ ための(int型J = I + 1、J <numList.length; J ++){ IF(numList [I] <numList [J]){ numList [I] = numList [J]。 numList [J] = TEMP。 } } } のための(INT NUM:numList){ System.out.print(NUM +」「)。 } } }
二分法の照会 - 非反復
org.junit.Testインポート; / ** * /ネイティブメソッド整数演算の使用済み部分を巻き取る切り捨て、数N、デジタルに適用可能な複数の反復を見つける 中央=最小+(MAX-*分)/ 2 アルゴリズムは、より正確です
検出されない* -1 * @authorのzhzh.yin * * / publicクラスCTEST { @Test 公共ボイドのtestMethod(){ 整数[] = {1,2,3,3,3,4,5,5 NUM、 } 5,5,5,6,6,6,7,10; のSystem.out.println( "NUMが" + selectPosition(NUM ,. 8)); } 公共のint selectPosition(整数[] numlist、NUMのINT ){ int型分= 0; INT = numList.length-MAX 1; int型ミドル= -1; 一方(MIN <= MAX){ ミドル=最小+(最大-最小)/ 2; = -1真ん中を。 するSystem.out.printlnに(「分- "+分+"、マックス - "+ MAX +"、中央- 「+真ん中)。 IF((MIN ==中央||最大==中央)&& numList [中間] = numは!){ ブレーク; } IF(numList [中間] <NUM){ 分=(INT)Math.floor(中央)。 }そうであれば(numList [中間]> NUM){ 最大値=(INT)Math.ceil(中央)。 }他{ 破ります。 } } 中央返します。 } }