冒泡排序

2018-04-04  本文已影响6人  四喜汤圆

一、思想

是一种交换排序,。对[l,h]范围内的数据逐步缩小排序范围进行h-l+1趟冒泡排序。每一趟冒泡排序要做的就是把最大的数交换到尾部。

二、实现

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class 冒泡排序 {
    public static void main(String[] args) {
        Random r = new Random();
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = r.nextInt(100);
        }
//      for(int i=0;i<n;i++){
//          nums[i]=scan.nextInt();
//      }
        System.out.println(Arrays.toString(nums));
        new 冒泡排序().bubbleSort(nums, 0, n-1);
        System.out.println(Arrays.toString(nums));
    }

    /**
     * 对数组nums中[l,h]范围内的数据进行排序,从小到大
     * @param nums
     * @param l
     * @param h
     */
    public void bubbleSort(int[] nums,int l,int h){
        // 长度为1时无需进行排序直接返回
        if(l>=h){
            return;
        }
        // 进行h-l次冒泡排序
        for(int i=h;i>=l+1;i--){
            // 此次冒泡排序的范围的是[l,i]
            for(int j=l;j<i;j++){
                if(nums[j]>nums[j+1]){
                    // 交换两个元素位置
                    int temp=nums[j];
                    nums[j]=nums[j+1];
                    nums[j+1]=temp;
                }
            }
        }
    }
}

上一篇 下一篇

猜你喜欢

热点阅读