冒泡排序1

冒泡排序一:

可以利用这样排序来排序:将第一个元素和它后面的元素比较大小,如果比后面的某个元素大,就将这两个元素互换位置,直到最后一个元素,一轮排序完毕,获得一个最小值在新数组的第一位。接着再对第二个元素重复以上操作,这样第二个元素也是除第一个元素之外最小的,一直到第n-1个元素,和第n个元素比较,如果小于n,结束循环,如果大于n,交换位置之后结束循环。

循环次数:(n-1)+(n-2)+……+1

package com.zzh;
import java.util.Scanner;

import javax.sound.midi.Soundbank;

public class Main {
//冒泡排序1
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] num=new int[n];
        int i,j,temp;
        for(i=0;i<n;i++) {
            num[i]=scanner.nextInt();
        }
        for(i=0;i<n-1;i++) {
            for(j=i+1;j<n;j++) {
                if (num[i]>num[j]) {
                    temp=num[i];
                    num[i]=num[j];
                    num[j]=temp;
                }
            }
        }
        for(i=0;i<n;i++) {
            System.out.print(num[i]+" ");
        }
    }
}

冒泡排序二:

待排数组:12 45 1 545 21 65 888

方法:将数组中相邻的元素两两比较,如果下标i的元素大于下标i+1的元素,则交换位置,一轮排序完成之后,数组中的最大值挪到新数组的最后,下标为n-1;新一轮排序的时候,依然从第一个元素到倒数第二个元素之间两两比较,得到一个最大值放在倒数第二位,这样的话,经过n-1轮排序之后,即可获得一个从小到大排序的新数组

package com.company;
import java.util.Scanner;

import javax.sound.midi.Soundbank;

public class Main {
    //冒泡排序1
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] num=new int[n];
        int i,j,k,temp;
        for(i=0;i<n;i++) {
            num[i]=scanner.nextInt();
        }
        //接下来对数组进行排序,一共要进行num.length-1轮排序
        for(j=0;j<num.length-1;j++) {
            //从第一个元素到倒数第二个元素
            for(i=0;i<n-1;i++) {
                if (num[i]>num[i+1]) {
                    temp=num[i];
                    num[i]=num[i+1];
                    num[i+1]=temp;
                }
            }
            n--;//每一轮排序结束,最大值存在数组末尾,所以下一轮排序的时候,n的值减1,减少比较次数
        }
        for(j=0;j<num.length;j++) {
            System.out.print(num[j]+" ");
        }
    }
}

 

posted @ 2018-10-20 20:59  博客园机器人  阅读(365)  评论(0编辑  收藏  举报