排序——选择排序:选择排序、双向选择排序、堆排序
发布日期:2021-05-14 16:39:10 浏览次数:13 分类:精选文章

本文共 2916 字,大约阅读时间需要 9 分钟。

������������������

���������������������������������������������������������������������������������������������������������������

������������������O(n��)

������������������O(1)

���������������������

/**    
* ������������������---���������������������������������
* ������������������O(n��)
* ������������������O(1)
* ���������������������
* @param array
*/ public static void selectSort(int[] array){
for(int i = 0;i < array.length-1;i++){
int maxIndex = 0;
for(int j = 1 ; j < array.length - i; j++){
if(array[j] > array[maxIndex]{
maxIndex = j;
}
}
int temp = array[maxIndex];
array[maxIndex] = array[array.length-i-1];
array[array.length-i-1] = temp;
} }
/**
* ������������������---���������������������������������
* ������������������O(n��)
* ������������������O(1)
* ���������������������
* @param array
*/ public static void selectSort1(int[] array) {
for(int i = 0;i efficacy������ment

���������������������������������������������������

���������������

���������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������

������������������O(n log n)

������������������O(1)

���������������������

/**    
* ������������������O(n log n)
* n log n + n * (1+log(n))
* * ������������������O(1)
* ���������������������
* @param array
*/ public static void heapSort(int[] array){
//1.������������
createBigHeap(array);
//2.���������������������������array.length-1���
for(int i = 0;i < array.length-1;i++){
swap(array,0, array.length-i-1);
adjustdown(array, array.length-i-1, 0);
}
public static void adjustdown(int[] array,int size,int index){
while (2 * index + 1 < size){
int maxchildindex = 2 * index + 1;
if(maxchildindex >= size){
break;
}
if(array[maxchildindex + 1] > array[maxchildindex]){
maxchildindex++;
}
if(array[index] >= array[maxchildindex]){
break;
}
swap(array,index, maxchildindex);
index = maxchildindex;
}
}
public static void createBigHeap(int[] array){
for(int i = (array.length-1)/2; i >=0; i--){
adjustdown(array, array.length, i);
}
}
public static void swap(int[] array,int l,int r){
int tmp = array[l];
array[l] = array[r];
array[r] = tmp;
}
上一篇:代码片段——web.xml
下一篇:排序——交换排序:冒泡排序和快速排序

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年05月03日 00时31分26秒