java排序代码合集

冒泡排序

思路:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

int[] arr = new int[];
for( int i = 0;i<arr.length;i++) {
    for( int j = 0;j<arr.length-1-i;j++) {
        if( arr[j] = arr[j+1] ) {
            int temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}

选择排序

思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

int[] arr = new int[];
for( int i=0;i<arr.length-1;i++) {
    int last = arr.length-1-arr;
    int max = 0;
    for( int j=0;j<arr.length-arr;j++) {
        if( arr[max]>arr[j]) {
            max=j;
        }
    }
    if( max!=last ) {
        int temp = arr[max];
        arr[max] =arr[last];
        arr[last] = temp;
    }
}

插入排序

插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。

int[] arr = new int[];
for( int i=0;i<arr.length-1;i++) {
    int curr = arr[i+1];
    fo( int j=i;j>=0;j--) {
        if( curr<arr[j] ) {
            arr[j+1] = arr[j];
        }else {
            break;
        }
        arr[j] = curr;
    }
}

希尔排序 

先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。

因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高

int[] arr = new int[];
for( int i=arr.length/2;i>0;i/=2 ) {
    for( int j=i;j<arr.length;j++ ) {
        for( int k=j;k>0&&k-i=0;k-=i ) {
            if( arr[k]<arr[k-i] ) {
            int temp = arr[k];
            arr[k] = arr[k-i];
            arr[k-i] = temp;
            }else break
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值