最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析java雙向冒泡排序算法

 更新時間:2015年02月02日 10:45:13   投稿:hebedich  
這篇文章主要介紹了淺析java雙向冒泡排序算法,并附上源碼,需要的朋友可以參考下

以整數(shù)升序排序為例來簡單說明一下雙向冒泡排序的過程:首先從前往后把最大數(shù)移到最后,然后反過來從后往前把最小的一個數(shù)移動到數(shù)組最前面,這一過程就是第一輪,然后重復(fù)這一過程,最終就會把整個數(shù)組從小到大排列好。雙向冒泡排序要稍微優(yōu)于傳統(tǒng)的冒泡排序,因為雙向排序時數(shù)組的兩頭都排序好了,我們只需要處理數(shù)組的中間部分即可,而單向即傳統(tǒng)的冒泡排序只有尾部的元素是排好序的,這時每輪處理都需要從頭一直處理到已經(jīng)排好序元素的前面一個元素。雖然它在效率上有了點改進,但它也不能大幅度提高其排序的效率,這是由冒泡排序的基本過程所決定了的。在此基礎(chǔ)上改進了一下,下面的代碼可以實現(xiàn)對奇數(shù)偶數(shù)分別排序

雙向冒泡排序源代碼:

復(fù)制代碼 代碼如下:

package com.zc.manythread;
import java.util.Random;
/**
 * 雙向冒泡排序
 * @author 偶my耶
 *
 */
public class BBSort  {
    //雙向冒泡算法,極大的減少了循環(huán)排序的次數(shù)
    public int[] sort(int[] a)throws Exception{
        int j;
        int limit=a.length;
        int st=-1;
        while(st<limit){
             //必須要給st和limit賦值,否則若數(shù)組一開始就有序
            st++;
            limit--;
            boolean swapped=false;
            //第一次循環(huán)將最大的值放到末尾
            for (j = st    ; j < limit; j++) {
                 if (a[j]>a[j+1]) {
                    int T=a[j];
                    a[j]=a[j+1];
                    a[j+1]=T;
                    swapped=true;
                }
            }
            if (!swapped) {
                return a;
            }else {
                swapped=false;
                //第二次循環(huán)將最小的值放到了開頭
                for (j = limit; --j>=st;) {
                    if(a[j]>a[j+1]){
                        int T=a[j];
                        a[j]=a[j+1];
                        a[j+1]=T;
                        swapped=true;
                    }
                }
                if (!swapped) {
                    return a;
                }
            }
        }
        return a;
    }
    private static int[]  createDate(int count) {
        /**
         * 無重復(fù)數(shù)組
         */
        int[] data=new int[count];
          Random rand = new Random();
          boolean[] bool = new boolean[100];
          int num = 0;
          for (int i = 0; i < count; i++) {
           do {
            // 如果產(chǎn)生的數(shù)相同繼續(xù)循環(huán)
            num = rand.nextInt(100);
           } while (bool[num]);
           bool[num] = true;
        /*   list.add(num);*///list 列表
           data[i]=num;
          }
          return data;
    }
public static void main(String[] args) {
    final int count=10;
    int[] data=createDate(count);
    for(int n : data){
           System.out.print(n+"\t");
        }
    System.out.println();
    BSrot bsrot=new BSrot(data);
    try {
    int[] a=bsrot.sort(data);
    for(int n : a){
           System.out.print(n+"\t");
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}

運行結(jié)果:

相關(guān)文章

  • 使用@Validated和@Valid 解決list校驗的問題

    使用@Validated和@Valid 解決list校驗的問題

    這篇文章主要介紹了使用@Validated和@Valid 解決list校驗的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • IDEA 如何控制編輯左側(cè)的功能圖標ICON(操作步驟)

    IDEA 如何控制編輯左側(cè)的功能圖標ICON(操作步驟)

    很多朋友被idea左側(cè)的圖標不見了這一問題搞的焦頭爛額,不知道該怎么操作,今天小編就交大家如何控制編輯左側(cè)的功能圖標 ICON,文字內(nèi)容不多,主要通過兩張截圖給大家說明,感興趣的朋友一起看看吧
    2021-05-05
  • Springboot Redis設(shè)置key前綴的方法步驟

    Springboot Redis設(shè)置key前綴的方法步驟

    這篇文章主要介紹了Springboot Redis設(shè)置key前綴的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • SpringBoot靜態(tài)資源及原理解析

    SpringBoot靜態(tài)資源及原理解析

    這篇文章主要介紹了SpringBoot靜態(tài)資源及原理解析,當創(chuàng)建一個jar工程時,想引入css等靜態(tài)資源時,需要遵守SpringBoot的靜態(tài)資源映射關(guān)系,通過WebMvcAutoConfiguration查看靜態(tài)配置資源的規(guī)則,需要的朋友可以參考下
    2023-12-12
  • Spring手動獲取bean的四種方式

    Spring手動獲取bean的四種方式

    本文主要介紹了Spring手動獲取bean的四種方式,包括BeanFactoryPostProcessor接口,ApplicationContextAware接口,注解 @PostConstruct 初始化時獲取,啟動類ApplicationContext獲取這四種方法,感興趣的可以了解一下
    2024-01-01
  • Java枚舉類與注解,新手一篇搞定它

    Java枚舉類與注解,新手一篇搞定它

    枚舉類型是Java 5新增的特性,它是一種新的類型,允許用常量來表示特定的數(shù)據(jù)片斷,而且全部都以類型安全的形式來表示。由于Java 不支持多繼承,所以枚舉對象不能再繼承其他類(可以實現(xiàn)接口)
    2021-06-06
  • java 生成有序賬號的實現(xiàn)方法

    java 生成有序賬號的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava 生成有序賬號的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Java ArrayList add(int index, E element)和set(int index, E element)兩個方法的說明

    Java ArrayList add(int index, E element)和set(int index, E el

    今天小編就為大家分享一篇關(guān)于Java ArrayList add(int index, E element)和set(int index, E element)兩個方法的說明,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Mybatis plus 配置多數(shù)據(jù)源的實現(xiàn)示例

    Mybatis plus 配置多數(shù)據(jù)源的實現(xiàn)示例

    這篇文章主要介紹了Mybatis plus 配置多數(shù)據(jù)源的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java Springboot如何基于圖片生成下載鏈接

    Java Springboot如何基于圖片生成下載鏈接

    這篇文章主要介紹了Java Springboot如何基于圖片生成下載鏈接,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03

最新評論

元谋县| 哈尔滨市| 涿州市| 肃北| 长岛县| 丰顺县| 友谊县| 漯河市| 永修县| 石台县| 东辽县| 玉环县| 河东区| 南阳市| 建德市| 抚松县| 楚雄市| 盐池县| 吴忠市| 南乐县| 台江县| 屯昌县| 泾川县| 改则县| 容城县| 上蔡县| 阳江市| 雷州市| 宁陕县| 郑州市| 永泰县| 恭城| 斗六市| 寻甸| 南平市| 富川| 罗江县| 淮安市| 河源市| 苏尼特右旗| 米林县|