Javaの一般的に使用されるアルゴリズム

選択ソート、複雑性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(中央)。 }他{ 破ります。 } } 中央返します。 } }

  

 

おすすめ

転載: www.cnblogs.com/zhizhiyin/p/10986181.html