首页 > 其他分享 >冒泡排序

冒泡排序

时间:2023-01-03 09:11:52浏览次数:43  
标签:int 冒泡排序 array 排序 异常 throw

冒泡排序

冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!

八大排序:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序、基数排序。

冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人皆知。

我们看到嵌套循环,应该立刻就可以得出这个算法的时间复杂度为O(n2)。

/*
* 1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换它们的位置
* 2.每一次比较,都会产生出一个最大的,或者最小的数字
* 3.下一轮则可以少一次排序
* 4.依次排序,直到结束
**/
public static void main(String[] args) {
  int[] array = {798,33,23,16,65,45,2,4,66,9999};
  array = sort(array);
  System.out.println(Arrays.toString(array));
}

private static int[] sort(int[] array) {
  //临时变量
  int temp = 0;

  //外层循环,判断我们这个要走多少次;
  for (int i = 0; i < array.length - 1; i++) {

      //通过flag标识位减少没有意义的比较
      boolean flag = false;

      //内层循环,比较判断两个数,如果第一个数,比第二个数大,则交换位置
      for (int j = 0; j < array.length - 1 - i; j++) {
          if (array[j+1] < array[j]) {
              temp = array[j];
              array[j] = array[j+1];
              array[j+1] = temp;
              flag = true;
          }
      }
      if (flag==false) {
          break;
      }
  }
  return array;
}

每日Java面试题

一、Java中异常分类

按照异常处理时机:

编译时异常(受控异常(CheckdException))和运行时异常(非受控异常(UnCheckedException))

二、如何自定义异常

继承Exception是检查性异常,继承RuntimeException是非检查性异常,一般要复写两个构造方法,用throw抛出新异常

如果同时有很多异常抛出,那可能是异常链,就是一个异常引发另一个异常,另一个异常引发更多异常,一般我们会找它的原始异常来解决问题,一般会在开头或结尾,异常可通过initCause串起来,可以通过自定义异常。

三、Java中异常处理

首先处理异常主要有两种方式:一种try catch,一种是throws。

try catch:

  • try{} 中放入可能发生异常的代码。catch{}中放入堆捕获到异常之后的处理。

throw throws:

  • throw是语句抛出异常,出现于函数内部,用来抛出一个具体异常实例,throw被执行后面的语句不起作用,直接转入异常处理阶段。

  • throws是函数方法抛出异常,一般写在方法的头部,抛出异常,给方法的调用者进行解决。

标签:int,冒泡排序,array,排序,异常,throw
From: https://www.cnblogs.com/cuijiuba/p/17021054.html

相关文章

  • 冒泡排序
      #include<iostream>usingnamespacestd;intmain(){ intarray[9]={2,1,4,6,5,9,7,3,8}; cout<<"排序前数组为"<<endl; for(inti=0;i<9;i++) { ......
  • C语言冒泡排序代码演示
     //---------冒泡排序 voidbubble_sort(intarr[],intsz) {   //确定冒泡排序的趟数   inti=0;   for(i=0;i<sz-1;i++)   {......
  • 冒泡排序
    冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应......
  • Day26.1.冒泡排序
    Day26.1.冒泡排序1.内容两层循环,外层冒泡轮数,内层依次比较,时间复杂度O(n2),{实际为(n-1)*n/2},(具体参考数据结构)相邻的数比较一轮确定一个数的位置最后一个数......
  • 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......