美文网首页
java常见算法

java常见算法

作者: _fanqh | 来源:发表于2018-11-06 23:01 被阅读0次

1、冒泡排序

两个数比较大小,较大的数下沉,较小的数冒起来。
平均时间复杂度:O(n2)

public static void BubbleSort(int [] arr){
        
        int temp;//临时变量
        for(int i=0; i<arr.length-1; i++){   //表示趟数,一共arr.length-1次。
            for(int j=arr.length-1; j>i; j--){
                
                if(arr[j] < arr[j-1]){
                    temp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = temp;
                }
            }
        }
    }

优化:
针对问题:
数据的顺序排好之后,冒泡算法仍然会继续进行下一轮的比较,直到arr.length-1次,后面的比较没有意义的。

方案:
设置标志位flag,如果发生了交换flag设置为true;如果没有交换就设置为false。
这样当一轮比较结束后如果flag仍为false,即:这一轮没有发生交换,说明数据的顺序已经排好,没有必要继续进行下去。

2、选择排序

在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换;
第二次遍历n-2个数,找到最小的数值与第二个元素交换;
。。。
第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。
平均时间复杂度:O(n2)

public static void select_sort(int array[],int lenth){
      
      for(int i=0;i<lenth-1;i++){
          
          int minIndex = i;
          for(int j=i+1;j<lenth;j++){
             if(array[j]<array[minIndex]){
                 minIndex = j;
             }
          }
          if(minIndex != i){
              int temp = array[i];
              array[i] = array[minIndex];
              array[minIndex] = temp;
          }
      }
  }

3、插入排序

在要排序的一组数中,假定前n-1个数已经排好序,现在将第n个数插到前面的有序数列中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
平均时间复杂度:O(n2)

public static void  insert_sort(int array[],int lenth){
      
      int temp;
      
      for(int i=0;i<lenth-1;i++){
          for(int j=i+1;j>0;j--){
              if(array[j] < array[j-1]){
                  temp = array[j-1];
                  array[j-1] = array[j];
                  array[j] = temp;
              }else{         //不需要交换
                  break;
              }
          }
      }
  }

相关文章

  • java常见算法

    1、冒泡排序 两个数比较大小,较大的数下沉,较小的数冒起来。平均时间复杂度:O(n2) 优化:针对问题:数据的顺序...

  • java常见算法

    冒泡排序 时间复杂度: O(n^2) ```java /** * 第一次:0 ~ n-1 排序 最大的交换到n-1...

  • Java实现常用的三种加密算法详解

    Java实现常用的三种加密算法详解 信息摘要算法、对称加密算法以及非对称加密算法。本文将利用Java实现这几种常见...

  • 排序算法(四) 希尔排序(插入排序的进化)

    参考Java排序算法(四):希尔排序常见排序算法 - 希尔排序 (Shell Sort) 希尔排序算法是按其设计者...

  • 排序算法

    常见排序算法比较 参考资料:各种排序算法比较 参考资料:快速排序算法 必须知道的八大种排序算法【java实现】(一...

  • 对 Java 内存的一些理解-[Android_YangKe]

    Java 垃圾回收机制优点 Java 内存模型 什么是内存抖动 什么是内存泄漏 垃圾回收机制常见算法 Java 垃...

  • 常见算法 (java实现)

    1.冒泡算法 :大数像气泡一样往上冒。 2.快速排序:找到中间值,分成左右两组,左边的数值均小于右边的数值。然后递...

  • Java常见算法整理

    兔子问题(斐波那契数列规律) 台阶问题 (兔子问题变种,递归规律) 素数问题(判断素数、质数方式) 水仙花数问题(...

  • 成为顶尖程序员不得不经历的面试题

    一、数据结构与算法基础 · 说一下几种常见的排序算法和分别的复杂度。 · 用Java写一个冒泡排序算法 · 描述一...

  • 面试Java开发常用题的答案

    一、数据结构与算法基础 · 说一下几种常见的排序算法和分别的复杂度。 · 用Java写一个冒泡排序算法 · 描述一...

网友评论

      本文标题:java常见算法

      本文链接:https://www.haomeiwen.com/subject/lwwpxqtx.html