• 冒泡排序java


    一、最简单粗暴的排序

    思想为:让每一个关键字都和它后边的每一个关键字比较,

    如果大则交换,这样第一个位置的关键字在一次循环后一定变为最小值。

     1 package demo01;
     2 
     3 class BubbleSort01 {
     4     public static void main(String[] args) {
     5         int[] n = {0,5,2,6,9,3,4,8,1,10,82,100,52,35,46,7};
     6         int i,j;
     7         for(int x=1;x<n.length;x++){
     8             System.out.print(n[x] + "、");
     9         }
    10         System.out.println("");
    11         
    12         for(i=1;i<n.length;i++){
    13             for(j=i+1;j<n.length;j++){
    14                 if(n[i]>n[j]){
    15                     int temp = n[i];
    16                     n[i] = n[j];
    17                     n[j] = temp;
    18                 }
    19             }
    20         }
    21         
    22         for(int x=1;x<n.length;x++)
    23             System.out.print(n[x]+ "、");
    24     }
    25 }

    二、正宗的冒泡排序

    思想:

    当外循环为1(循环变量i=1),内循环(变量j)由大到小,两两比较,

    将较小值换到前面,之道最小值放到最前面;开始下一次循环(i=2),一次类推…………

     

     1 package demo01;
     2 
     3 class BubbleSort02 {
     4     public static void main(String[] args) {
     5         int[] n = {0,5,2,6,9,3,4,8,1};
     6         int i,j;
     7         for(int x=1;x<n.length;x++){
     8             System.out.print(n[x] + "、");
     9         }
    10         System.out.println("");
    11         
    12         for(i=1;i<n.length;i++){
    13             for(j=n.length-1;j>=2;j--){
    14                 if(n[j]<n[j-1]){
    15                     int temp = n[j];
    16                     n[j] = n[j-1];
    17                     n[j-1] = temp;
    18                 }
    19             }
    20         }
    21         
    22         for(int x=1;x<n.length;x++)
    23             System.out.print(n[x]+ "、");
    24     }
    25 }

     

    三、优化的冒泡排序算法

    思想:在上述算法二的基础上,对交换数据的步骤进行标记,即,如果发生了数据交换,标记的值就会变化。

    当某次外循环进行时,标记位的值始终不变,说明此次循环没有发生值的交换,即说明已经排序完成。

     1 package demo01;
     2 
     3 class BubbleSort03 {
     4 
     5     public static void main(String[] args) {
     6         int[] n = {0,5,2,6,9,3,4,7,8,1};
     7         
     8         for(int x=1;x<n.length;x++){
     9             System.out.print(n[x] + "、");
    10         }
    11         System.out.println("");
    12         
    13         int i,j;
    14         boolean flag = true;    //flag作为标记
    15         for(i=1;i<n.length && flag;i++){
    16             flag = false;        //初始化flag
    17             for(j=n.length-1;j>=2;j--){
    18                 if(n[j]<n[j-1]){
    19                     int temp = n[j];
    20                     n[j] = n[j-1];
    21                     n[j-1] = temp;
    22                     flag = true;
    23                 }
    24             }
    25         }
    26         
    27         for(int x=1;x<n.length;x++)
    28             System.out.print(n[x]+ "、");
    29     }
    30 }

     

  • 相关阅读:
    HDU1285-确定比赛名次(拓扑排序)
    ftp sftp
    Python with 用法
    odoo 非root用户运行不成功
    linux 删除软连接
    vscode wsl php
    WSL 修改默认登录用户为root
    WSL ssh服务自启动
    odoo 获取model的所有字段
    odoo 在"动作"("Action")菜单中添加子菜单, 点击子菜单弹窗自定义form
  • 原文地址:https://www.cnblogs.com/XuGuobao/p/7345155.html
Copyright © 2020-2023  润新知