zoukankan      html  css  js  c++  java
  • 冒泡排序

     1 private static int[] bubbleSort(int[] arr) {
     2         int k=arr.length-1,last=0;   //最后一次交换的位置,后面已经为排好序状态
     3         if (arr==null||arr.length<2) {
     4             return arr;
     5         }
     6         for(int i=arr.length-1;i>=0;i--){
     7             boolean flag=false;   //每次比较的时候都设置标志位,查看是否发送交换
     8             for (int j = 0; j <k; j++) {
     9                 if (arr[j]>arr[j+1]) {
    10                     last=j;
    11                     swap(arr,j,j+1);
    12                     flag=true;   //发生交换后,标志位变为true
    13                 }
    14             }
    15             k=last;
    16             //如果标志位不发生变化,则说明已处于排好序的状态
    17             if (!flag) {
    18                 return arr;
    19             }
    20         }
    21         return arr;
    22     }
    23     private static void swap(int[] arr, int j, int i) {
    24         int tmp=arr[j];
    25         arr[j]=arr[i];
    26         arr[i]=tmp;
    27     }
    28     
    29     private static int[] creatArray(int length,int range) {
    30         if (length<1) {
    31             return null;
    32         }
    33         int arr[]=new int[length];
    34         for(int i=0;i<length;i++){
    35             arr[i]=(int)(Math.random()*range);
    36         }
    37         return arr;
    38     }
    39     private static void show(int[] arr) {
    40         if (arr.length<1||arr==null) {
    41             return;
    42         }
    43         for(int i=0;i<arr.length;i++){
    44             System.out.print(arr[i]+" ");
    45         }
    46         System.out.println();
    47     }
    48     public static void main(String[] args) {
    49         for(int i=0;i<5;i++){
    50             show(bubbleSort(creatArray(10, 30)));
    51         }
    52     }
    View Code

    冒泡排序,为相邻两个元素进行比较,扫描的范围从0-N-1到1;时间复杂度为O(n方)

     1 private static int[] bubbleSort(int[] arr) {
     2         int k=arr.length-1,last=0;   //最后一次交换的位置,后面已经为排好序状态
     3         if (arr==null||arr.length<2) {
     4             return arr;
     5         }
     6         for(int i=arr.length-1;i>=0;i--){
     7             boolean flag=false;   //每次比较的时候都设置标志位,查看是否发送交换
     8             for (int j = 0; j <k; j++) {
     9                 if (arr[j]>arr[j+1]) {
    10                     last=j;
    11                     swap(arr,j,j+1);
    12                     flag=true;   //发生交换后,标志位变为true
    13                 }
    14             }
    15             k=last;
    16             //如果标志位不发生变化,则说明已处于排好序的状态
    17             if (!flag) {
    18                 return arr;
    19             }
    20         }
    21         return arr;
    22     }
  • 相关阅读:
    使用VSCode创建简单的Razor Webapp--1.入门
    ASP.NET Razor 常用示例
    ASP.NET Razor 语法
    ASP.NET Razor简介
    EF CodeFirst 一对一、一对多、多对多关系
    mysql外键
    EF CodeFirst 之 Fluent API
    替换JDK 对eclipse的影响?
    mysql数据库,安装 !创建!...详解!
    Apache的commons工具类
  • 原文地址:https://www.cnblogs.com/peng111/p/5768829.html
Copyright © 2011-2022 走看看