冒泡排序

冒泡排序

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

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

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

我们看到嵌套循环,应该立刻就可以得出这个算法的时间复杂度为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是函数方法抛出异常,一般写在方法的头部,抛出异常,给方法的调用者进行解决。

posted @   崔九八  阅读(436)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示