java 정렬 알고리즘 - 정렬 선택

1638 단어 Java 정렬
public class SelectionSort {



	private static void selectSortTest() {

		int[] sortArray = { 5, 2, 4, 1, 3 };

		System.out.print("     : ");

		Utils.printArray(sortArray);

		selectSort(sortArray); 

		System.out.print("     : ");

		Utils.printArray(sortArray);

	}



	public static void selectSort(int[] sort) {

		int temp;

		for (int i = 0; i < sort.length - 1; i++) {

			for (int j = i + 1; j < sort.length; j++) {

				if (sort[i] > sort[j]) {

					temp = sort[i];

					sort[i] = sort[j];

					sort[j] = temp;

				}

			}

		}

	}



	public static void heapSortTest(){

		int[] arr = { 5, 2, 4, 1, 3 };

		Utils.printArray("    :",arr);

		heapSort(arr);

		Utils.printArray("    :",arr);

	}

	

	public static void heapSort(int[] arr) {

		int arrLen = arr.length;

		int temp = 0;

		

		//   

		for (int i = (arrLen-1) / 2; i >= 0; i--)

			adjustHeap(arr, i, arrLen);

		

		//   

		for (int i = arrLen - 2; i >= 0; i--) {

			temp = arr[i + 1];

			arr[i + 1] = arr[0];

			arr[0] = temp;

			adjustHeap(arr, 0, i + 1);

			

//			Utils.printArray(" "+(9-i)+"   :",arr);

		}

	}



	public static void adjustHeap(int[] arr, int ri, int n) {

		int temp = arr[ri];

		int ci = 2 * ri + 1;

		while (ci <= n - 1) {

			if (ci < n - 1 && arr[ci] < arr[ci + 1])

				ci++;

			

			if (temp >= arr[ci])

				break;

			arr[(ci - 1) / 2] = arr[ci];

			ci = 2 * ci + 1;

		}

		arr[(ci - 1) / 2] = temp;

	}

	

	public static void main(String [] args){

		selectSortTest();

		heapSortTest();

	}

}


좋은 웹페이지 즐겨찾기