首页 > 其他分享 >Day26.1.冒泡排序

Day26.1.冒泡排序

时间:2022-12-21 18:44:06浏览次数:33  
标签:int 位置 冒泡排序 public Day26.1 排序 array

Day26.1.冒泡排序

1.内容

  • 两层循环,外层冒泡轮数,内层依次比较,时间复杂度O(n2),{实际为(n-1)*n/2},(具体参考数据结构)

  • 相邻的数比较

  • 一轮确定一个数的位置

  • 最后一个数不用进行单独轮次的比较,因为只有一个位置剩余,所以最后一个数的位置是确定的

  • n个数需要n-1轮排序,总共进行n*(n-1)/2次比较次数

  • 相邻数交换位置,需通过中间变量来交换

2.示例

 public class Demo06 {
     public static void main(String[] args){
         //冒泡排序
         int[] a={1,5,9,98,101,6,0};
         sort(a);
 ​
    }
     //定义冒泡排序方法
     public static void sort(int[] array){
         for(int i=0;i<array.length-1;i++){//一轮确定一个数的位置,剩下的最后一个数无需比较,n-1次排序
             for(int j=0;j<array.length-1-i;j++){//循环比较
                 if(array[j]>array[j+1]){//通过中间变量交换位置
                     int t=array[j+1];
                     array[j+1]=array[j];
                     array[j]=t;
                }
            }
        }
         System.out.println(Arrays.toString(array));
    }
 }

改进:

 public static void sort(int[] array){
     for(int i=0;i<array.length-1;i++){//一轮确定一个数的位置,剩下的最后一个数无需比较,n-1次排序
         boolean flag=false;
         for(int j=0;j<array.length-1-i;j++){//循环比较
             if(array[j]>array[j+1]){//通过中间变量交换位置
                 int t=array[j+1];
                 array[j+1]=array[j];
                 array[j]=t;
                 flag=true;
            }
        }
         if(flag==false){//说明某一次排序(设第X次排序)没有发生交换,说明形式上未排序好的数,实际已经排序好了
             break;//X之后的排序都不用执行了
        }
    }
     System.out.println(Arrays.toString(array));
 }

减少无效排序,筛选条件为某次排序的所有比较次数都未发生位置交换。

标签:int,位置,冒泡排序,public,Day26.1,排序,array
From: https://www.cnblogs.com/HomeFJ/p/16996932.html

相关文章

  • JavaScript冒泡排序+Vue可视化冒泡动画
    冒泡排序(BubbleSort)算是前端最简单的算法,也是最经典的排序算法了。网上JavaScript版本的冒泡排序很多,今天用Vue实现一个动态的可视化冒泡排序。01、JavaScript冒泡排序......
  • 冒泡排序相关知识总结
    轮数表示冒泡排序外层循环的次数,次数表示交换次数。设排列为\(w\),冒泡排序的轮数为\(\max_{i=1}^{n}(i-w_i)\).因为如果\(i>w_i\),那么这个数每一轮会向目的地......
  • 交换排序(冒泡排序和快速排序)
    学习时间2022.12.13交换排序基本概念冒泡排序基本概念来自菜鸟教程冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如......
  • Go-冒泡排序
    packagemainimport"fmt"//11,9,2,8,3,7,4,6,5,10//911283746510//921183746510//928113746510//928311746510//9283......
  • 冒泡排序
    staticint[]Bubble(int[]a){intswap;if(a.length==0)returnnull;for(inti=1;i<a.length;i++/*i是后面数的下标*/){for(intj=0;j<i;j++/......
  • 冒泡排序
    冒泡排序QList<int>Qt_2022121201::sortList(QList<int>list_param){for(intk=0;k<list_param.size()-1;k++){for(intj=0;j<list......
  • C语言 (数据结构)在顺序表中用二分查找和冒泡排序算法
    main.c:#include<stdio.h>#include<stdlib.h>#include"SequenceList.h"intmain(){//创建顺序表和指针SequenceListSL,*P_SL;intchoice=0;......
  • 冒泡排序
    voidbubble_sort(intarr[],intn){ inti,j,tmp; for(i=0;i<n;i++) { intflag=1; for(j=0;j<n-1-i;j++)//n个元素,两两对比, //只需要进行n-1次......
  • 冒泡排序
    冒泡排序图解代码实现packagecom.wiselee.sort;importjava.util.Arrays;/***@PROJECT_NAME:DataStruct*@DESCRIPTION:*@USER:28416*@DATE:2022/......
  • 冒泡排序新方式
    #Startwithalistofnumbersthatain'tsortednumbers=[0,5,1,4,2,8]#Keeptrackofwhetheranyswapsweremadeonthepreviousiteration#Ifnoswapswer......