冒泡排序应用——数组去零

本文详细介绍了一种Java程序设计技巧,旨在去除整数数组中的零元素并对其进行排序。通过具体示例,演示了如何计算数组中零的数量,创建新数组,以及使用冒泡排序算法对新数组进行排序。此外,还提供了完整的代码实现,帮助读者理解和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class SortExercise {
/**
*
* @param args
* 输入一个整数数组,然后将数组中的0 去掉后返回一个新的数组,并对新的数组进行排序
* int[] array = {1,12,5,0,0,15,7,0,25,6,9,15,9};
* 程序分析
* 1,获取数组中0的个数,
* 2,定义一个新的数组,元素个数 = 原有数组的长度-0的个数
* 3,通过for循环,遍历原有的所有元素,并判断是否等于0,如果不等于0,就逐个赋值给新的数组
* 4,排序
* 5,输出
*/
public static void main(String[] args) {
//定义一个数组
int [] array={1,12,5,0,0,15,7,0,25,6,9,15,9};
//记录数组中零的个数
int count=0;
// 通过for循环得出该数组中零的个数
for(int i=0;i<array.length;i++){
//取数组元素
if(array[i]==0){
count++;
}
}
//定义一个新数组
int [] newArray=new int[array.length-count];
int index=0;
//从一个数组中取值,复制到新的数组,并且灯油0的元素,不赋值
for(int i=0;i<array.length;i++){
//取数组元素
if(array[i]!=0){
//对新的数组元素进行逐一赋值
newArray[index]=array[i];
index++;
}
}

    printArray(array);
    bubbleSort(newArray);
    printArray(newArray);
}
//冒泡排序
/*
* 原理:比较两个相邻的元素,将值大的元素交换至右端。

  思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。
  然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
  第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
  第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
  依次类推,每一趟比较次数-1;
* */
public static void bubbleSort(int[] array){
    //外循环控制循环的轮数
    for(int j=0;j<array.length-1;j++){
        //内循环控制每一轮比较的的元素个数
        for(int i=0;i<array.length-1-j;i++){
            //从第一个位置开始,相邻两个元素进行比较
            if(array[i]>array[i+1]){
                int temp =array[i];
                array[i]=array[i+1];
                array[i+1]=temp;
            }
        }
    }
}


//定义一个循环打印数组的方法
public static void printArray(int [] array){
    System.out.print("数组的元素:[");
    for (int i=0;i<array.length;i++){
        if(i!=array.length-1){
            System.out.print(array[i]+",");
        }
        else {
            System.out.print(array[i]);
        }
    }
    //输出并换行
    System.out.print("]");
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值