• 算法练习4冒泡排序java版


    冒泡排序的基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

    借用嘻哈算法这本书中的一张图

    如果有n 个数进行排序,只需将n-1 个数归位,也就是说要进行n-1 趟操作。而“每一趟”都需要从第1 位开始进行相邻两个数的比较,将较小的一个数放在后面,比较完毕后向后挪一位继续比较下面两个相邻数的大小,重复此步骤,直到最后一个尚未归位的数,已经归位的数则无需再进行比较。

    java程序代码如下:

    public class PaiXu {
    
        public static void main(String[] args) {

              PaiXu px = new PaiXu();
              int[] score = {5,3,5,2,8,0,7,10,4};

    /*
             * 20170205冒泡排序
             */
            int[] bubbleSortResult = px. bubbleSort(score);
            for(int i=0;i<score.length;i++){
                System.out.print(bubbleSortResult[i]+"    ");
            }
        }
        /*
         *  冒泡排序
         *  @param score 分数(0-10分)
         *  @return 返回计数数组
         *  说明:有n个数,相邻两个数比较,如果前面的数比后面的数小就交换位置,假设把一个最小的数放在最后面归位为一趟,需要比较1~n-1趟,设趟数为i,每趟比较次数为1~n-i次
         */
        public int[]  bubbleSort(int[] score){
            int a=0;
            int n=score.length;
            for(int i=1;i<=n-1;i++){
                for(int j=1;j<=n-i;j++){
                    if(score[j-1]<score[j]){
                        a=score[j-1];
                        score[j-1]=score[j];
                        score[j]=a;
                    }
                }
            }
            return score;
        }
    }

    代码执行结果为:

    10    8    7    5    5    4    3    2    0    
  • 相关阅读:
    剑指offer——最小的K个数和数组中第K大的元素
    Leetcode刷题指南链接整理
    160. Intersection of Two Linked Lists
    100. Same Tree
    92. Reverse Linked List II
    94. Binary Tree Inorder Traversal
    79. Word Search
    78,90,Subsets,46,47,Permutations,39,40 DFS 大合集
    0x16 Tire之最大的异或对
    0x16 Tire
  • 原文地址:https://www.cnblogs.com/paopaoquan/p/6367353.html
Copyright © 2020-2023  润新知