数据结构与算法-选择排序&堆排序

简单选择排序

排序思想:每次选出最小值与对应位置记录交换,直至序列有序。

void SelectSort(Sqlist &L){
    for(int i=1;iL.r[min];
    }//for
}

Java实现:

private void selectSort(int[] array) {
        int len=array.length;
        for (int i = 0; i < len; i++) {
            int target=array[i];
            int index=i;
            for (int j = i + 1; j < len; j++) {
                if (target > array[j]) {
                    target=array[j];
                    index=j;
                }
            }
            array[index]=array[i];
            array[i]=target;
        }
        println(array);
    }

堆排序

排序思想:将待排序列看成一个完全二叉树,完全二叉树所有非终端结点均不大于其左右孩子结点的值,反复进行便得到有序的序列。

//小顶堆
void HeapAdjust(Sqlist &L,int n){
    for(int i=2*n;iL.r[i/2];
        }//if
    }//for
}

void HeapSort(Sqlist &L){
    for(int i=L.length/2;i

Java实现:

private void adjust(int[] a,int end) {
        for (int i = end; i > 0; i--) {
            if (a[i] > a[i / 2]) {
                int tmp=a[i];
                a[i] = a[i / 2];
                a[i/2]=tmp;
            }
        }
    }
    private void heapSort(int[] array){

        if (array != null && array.length > 0) {
            adjust(array,array.length-1);
        }

        for (int i = array.length - 1; i > 0; i--) {
            int tmp=array[i];
            array[i] = array[0];
            array[0]=tmp;

            adjust(array,i-1);
        }

        println(testArray);
    }

你可能感兴趣的:(数据结构与算法-选择排序&堆排序)