数组的排序

数组的排序

排序的方式:
1、冒泡排序
2、选择排序
3、中位数排序

输出10个随机数进行排列
排序前:

public static void main(String[] args) {
    Random rand = new Random();
    int[] array = new int[10];
    int size = 0;
    array[size++] = 1+rand.nextInt(100);

    boolean no;
    for (int t;size<array.length;){
        t = 1+rand.nextInt(100);
        no = true;
        for (int j = 0; j <size ; j++) {
            if (array[j] == t){
                no = false;
                break;
            }
        }
        if (no){
            array[size++] = t;
        }
    }
    System.out.println("排序前:");
    for (int i : array) {
        System.out.println(i);
    }
}

冒泡排序(依次和右边的数进行比较,如果比右边大则往右排)

    //外层循环控制轮数
    for (int i = 0,t; i < array.length-1; i++) {
        //内循环控制每一轮比较多少次,找左边大的
        for (int j = 0; j <array.length-1 ; j++) {
            if (array[j]>array[j+1]){
                t = array[j];
                array[j] = array[j+1];
                array[j+1] = t;
            }
        }
        System.out.println("排序后:");
        for (int a : array) {
            System.out.println(a);
        }
    }
}

选择排序(假设一个最大数)

for (int i = 0,maxVallx,maxIx,t; i <array.length-1 ; i++) {
    maxVallx = 0; //假设最大值的下标为0,并通过内层循环进行验证调整
    maxIx = array.length-1-i; //最大下标在每一轮是固定的
    for (int j = 1; j <maxIx ; j++) {
        if (array[maxVallx]<array[j]){
            maxVallx = j;
        }
    }
    if (maxVallx != maxIx){
        t = array[maxVallx];
        array[maxVallx] = array[maxIx];
        array[maxIx] = t;
    }
}
System.out.println("排序后:");
for (int i : array) {
    System.out.println(i);
}

中位数排序
在这里插入图片描述

//找中位数排序    相对中位数
    int begin = 0;
    int end = array.length-1;
    int mid = array[0],t; //假设数组的第一个数为中位数
while(begin<end) {
    while (begin < end && mid <= array[end]) {//从后往前,小于mid的输出
        end--;//往前遍历
    }
    while (begin < end && mid >= array[begin]) {//从前往后,大于mid的输出
        begin++;
    }
    if (begin < end) {
        t = array[begin];
        array[begin] = array[end];
        array[end] = t;
    }
}
if (0!=begin){//改地方为begin和end相遇的地方,将其与mid换位置
    array[0] = array[begin];
    array[begin] = mid;
}
System.out.println("排序后:");
for (int i : array) {
    System.out.println(i);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值