Java小练习——冒泡排序

Java小练习——冒泡排序

题目描述

定义一个长度为9的数组;

输入9个数字,进行冒泡排序, 使其按照从小到大的顺序排列, 并将排列后的结果输出

思路

首先我们应明确冒泡排序的基本思路,即对每个相邻的元素进行比较,若顺序错误则进行交换。

例如数组 5,0,3,1,2

第一次循环我们对第一位与第二位进行比较,我们进行第一次循环时,第一位的5大于第二位的0,所以进行交换,因而数组变成了0,5,3,1,2

接着我们再进行第二次循环,对第二为数字与第三位数字进行比较,这里需要注意的是,此时的第二位数字为5,因而我们进行的是5与3的比较,很明显5大于3,所以数组变成了0,3,5,1,2

接着进行两次循环以后,数组就变成了0,3,1,2,5

以上便是代表着第一次大循环的完成

接着我们便可以进行第二次大循环,步骤与第一次大循环一致,即先对比第一位与第二位,若排序错误则换位置,若无错误则接着进行

最终我们便可以得到排过序的数组。

那么我们就应该说代码的实现了。

首先,我们因明确我们要使用for循环结构进行作答。

然后就是确定循环的次数

我们先来确认小循环的次数,还是拿上面的例子来打比方,第一位与第二位,第二位与第三位,第三位与第四位,第四位与第五位,小循环结束。循环次数为4

第二次小循环时,第一位与第二位,第二位与第三位,第三位与第四位,需要注意的是,此时第五位是最大的,不需要再替换,所以循环次数为3次

那么我们就可以知道,小循环次数其实就是数组元素的个数-大循环次数-1。

接着同样的方法我们可以得出大循环的次数同样为循环元素个数-1。

接着我们需要知道如何进行交换,若直接进行赋值则会导致原来数值被覆盖,那么我们可以定义一个变量temp作为中间量。

搞定了这些,相信代码很轻松就可以写出来了!

代码

package Test;

import java.util.Scanner;

public class Test6 {
   public static void main(String[] args) {
       Scanner sc = new Scanner(system.in);
       int [] array = new int[9]; //定义数组
       //通过循环向数组中插入数字
       for (int i = 0; i < array.length; i++) {
           array[i] = sc.nextInt();
      }package Test;

import java.util.Scanner;

public class Test6 {
   public static void main(String[] args) {
       Scanner sc = new Scanner(system.in);
       int [] array = new int[9]; //定义数组
       //通过循环向数组中插入数字
       for (int i = 0; i < array.length; i++) {
           array[i] = sc.nextInt();
      }
       //嵌套循环实现冒泡排序
       for (int i = 0; i < array.length - 1; i++) {
           for(int j = 0;j<array.length - 1 - i;j++){
               if(array[j]>array[j + 1]){
                   int temp = array[j];
                   array[j] = array[j + 1];
                   array[j + 1] = temp;
              }
          }
      }

       //通过循环进行输出
       for (int i = 0; i < array.length; i++) {
           System.out.print(array[i] + " ");
      }
  }
}
       //嵌套循环实现冒泡排序
       for (int i = 0; i < array.length - 1; i++) {
           for(int j = =0;j<array.length - 1 - i;j++){
               if(array[i]>array[j]){
                   int temp = array[i];
                   array[i] = array[j];
                   array[j] = temp;
              }
          }
      }

       //通过循环进行输出
       for (int i = 0; i < array.length; i++) {
           System.out.print(array[i] + " ");
      }
  }
}

运行结果

 

 

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...