选择排序(直接选择排序堆排序)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序(直接选择排序堆排序)相关的知识,希望对你有一定的参考价值。
一、直接选择排序
package algorithm.sort.compare.choose;
import java.util.Arrays;
public class DirectChooseSort{
public static void main ( String[] args ){
int[] arrayA = new int[] { 11, 213, 134, 65, 77, 78, 23, 43 };
directChooseSort (arrayA);
System.out.println (Arrays.toString (arrayA));
}
private static void directChooseSort ( int[] array ){
for ( int i = 0; i < array.length; i++ ){
int index = i;
for ( int j = i + 1; j < array.length; j++ ){
if (array[index] > array[j])
index = j;
}
if (i != index){
int temp = array[i];
array[i] = array[index];
array[index] = temp;
}
}
}
}
二、堆排序
package algorithm.sort.compare.choose; import java.util.Arrays; public class HeapSort { public static void main(String[] args) { int[] arrayA = new int[] { 213, 134, 65, 77, 78, 23, 43 }; method(arrayA, 0, arrayA.length); System.out.println (Arrays.toString (arrayA)); } private static void method( int[] array, int start, int len ){ int pos = ( len - 1 ) / 2; for ( int i = pos; i >= 0; i-- ){ int tmp = array[start + i]; int index = i * 2 + 1; while (index < len){ if (index + 1 < len && array[start + index] < array[start + index + 1]) // 从小到大 index += 1; if (tmp < array[start + index]){ // 从小到大 array[start + i] = array[start + index]; i = index; index = i * 2 + 1; } else break; } array[start + i] = tmp; } for ( int i = 0; i < len; i++ ){ int temp = array[start]; array[start] = array[start + len - 1 - i]; array[start + len - 1 - i] = temp; // 再一次 int post = 0; int tmp = array[start + post]; int index = 2 * post + 1; while (index < len - 1 - i){ if (index + 1 < len - 1 - i && array[start + index] < array[start + index + 1]) // 从小到大 index += 1; if (tmp < array[start + index]) {// 从小到大 array[start + post] = array[start + index]; post = index; index = post * 2 + 1; } else break; } array[start + post] = tmp; } } }
以上是关于选择排序(直接选择排序堆排序)的主要内容,如果未能解决你的问题,请参考以下文章
C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)