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

Java實(shí)現(xiàn)兩個(gè)隨機(jī)數(shù)組合并進(jìn)行排序的方法

 更新時(shí)間:2021年09月10日 10:39:23   作者:小Du猿  
本文主要介紹了Java實(shí)現(xiàn)兩個(gè)隨機(jī)數(shù)組合并進(jìn)行排序的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言:

​ 小Du猿結(jié)束"996ICP"CRUD開發(fā)工作生活,重新進(jìn)入了校園學(xué)習(xí)生活。本周開始了第二周數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識(shí)學(xué)習(xí),大愛向宇老師的上課方式,用生動(dòng)形象的方式講解抽象概念,但一開口就是LSP.O(∩_∩)O,向向宇大佬致敬,菜雞小Du猿投來膜拜的眼光。

​ 此博客用Java實(shí)現(xiàn)線性表的思想,實(shí)現(xiàn)數(shù)組的排序和序列化。序列化的排序方式采用冒泡排序的方式,但小Du猿正在優(yōu)化該算法。原因?yàn)椋翰捎妹芭菖判虻姆绞綍r(shí)間復(fù)雜度較大,正在考慮使用快速排序法;但此篇博客使用冒泡排序的方式,便于理解概念。

一、什么是線性表

Q1:什么是線性表:

A1:線性表是由N個(gè)類型相同的數(shù)據(jù)元素的有限序列(換句話描述:是具有像線一樣的性質(zhì)的表)

Q2: 線性表的順序存儲(chǔ)結(jié)構(gòu):

A2: 一段地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表的數(shù)據(jù)元素,使得線性表中在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲(chǔ)在連續(xù)的物理存儲(chǔ)單元中。

Q3:線性表的優(yōu)缺點(diǎn):

A3:

優(yōu)點(diǎn):1.無須為表示表中元素之間的邏輯關(guān)系而增加額外的存儲(chǔ)空間。

​ 2. 可以快速地存取表中任一位置的元素。

缺點(diǎn):1.插入和刪除操作需要移動(dòng)大量元素。

​ 2.當(dāng)線性表長度變化較大時(shí),難以確定存儲(chǔ)空間的容量。
​ 3.造成存儲(chǔ)空間的“碎片”。

二、ArrayList集合

​ 上課時(shí)理解線性表的基本概念后,我不禁想到了"ArrayList"集合。而ArrayList的特征基本與線性表大致符合。所以我在此梳理一下

ArrayList的概念

  • ArrayList的底層是Object類的數(shù)組,默認(rèn)長度是10,超過10后,長度變?yōu)樵L度的1.5倍。
  • 可以簡單的認(rèn)為是一個(gè)動(dòng)態(tài)數(shù)組;實(shí)際上ArrayList就是用數(shù)組實(shí)現(xiàn)的,長度不夠時(shí),調(diào)用Arrays.copyOf方法,拷貝當(dāng)前數(shù)組到一個(gè)新的長度更大的數(shù)組。

特點(diǎn):

  • 隨機(jī)訪問速度快,插入和移除性能較差(數(shù)組的特點(diǎn));
  • 支持null元素的存在;
  • 有順序結(jié)構(gòu);
  • 元素可以重復(fù);
  • 但線程不安全。

梳理ArrayList集合后,我們可以大概將線性表的特征約等于ArrayList集合,頓時(shí)小Du猿"悟了"⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄

三、用線性表的思想排序數(shù)組間排序

實(shí)現(xiàn)的原理小Du用圖的方式整理出來:

在這里插入圖片描述

代碼如下:

package com.company;

import java.util.Arrays;
import java.util.Random;

/**
 * @author Du Shun Chang
 * @version 1.0
 * @date 2021/9/7 22:48
 * @Todo: 1.隨機(jī)產(chǎn)生兩個(gè)數(shù)組,并進(jìn)行兩個(gè)數(shù)組的排序。2.排序好的數(shù)組,進(jìn)行排序合并
 * @QQ:1300442386
 */
public class Mian {
    public static void main(String[] args) {
        
//初始化兩個(gè)長度為10的數(shù)組
        Random random = new Random();
        int[] a = new int[10];
        int[] b = new int[10];
//隨機(jī)生成1000以內(nèi)的數(shù),并賦值到數(shù)組中
        for (int i = 0; i < 10; i++) {
            a[i] = random.nextInt(1000);
            b[i] = random.nextInt(1000);
        }
        System.out.println("隨機(jī)產(chǎn)生數(shù)組A:" + Arrays.toString(a));
        System.out.println("隨機(jī)產(chǎn)生數(shù)組B:" + Arrays.toString(b));
        int temp = 0;
//重新排序隨機(jī)數(shù)組A
        for (int i = 0; i < 10; i++) {
            for (int j = i; j < 10; j++) {
                if (a[i] >= a[j]) {
                    // 定義中間變量值
                    temp = a[i];
                    // 換位賦值
                    a[i] = a[j];
                    // 獲得新位置
                    a[j] = temp;
                }
            }
        }
        System.out.println("排序后的數(shù)組A:" + Arrays.toString(a));
//重新排序隨機(jī)數(shù)組B
        for (int i = 0; i < 10; i++) {
            for (int j = i; j < 10; j++) {
                if (b[i] >= b[j]) {
                    // 定義中間變量值
                    temp = b[i];
                    // 換位賦值
                    b[i] = b[j];
                    // 獲得新位置
                    b[j] = temp;
                }
            }
        }
        System.out.println("排序后的數(shù)組B:" + Arrays.toString(b));
//對新的數(shù)組進(jìn)行合并及進(jìn)行排序
        int l = a.length + b.length;
        int[] temps = new int[l];
        int i = 0, j = 0, h = 0;
        while (i < a.length || j < b.length) {
            if (i == a.length && j < b.length) {
                temps[h++] = b[j++];
            } else if (i < a.length && j == b.length) {
                temps[h++] = a[i++];
            } else if (a[i] <= b[j]) {
                temps[h++] = a[i++];
            } else if (a[i] > b[j]) {
                temps[h++] = b[j++];
            }
        }
        System.out.print("排序后最新數(shù)組:" + Arrays.toString(temps));
    }
}

運(yùn)行結(jié)果為:

運(yùn)行結(jié)果

四、冒泡排序:

冒泡排序:
在數(shù)組中兩兩進(jìn)行比較,較大數(shù)往后移動(dòng),與下一位數(shù)再次兩兩比較,依次循環(huán)排序。
原理圖如下:

冒泡排序原理

代碼如下:

/**
 * @author Du Shun Chang
 * @version 1.0
 * @date 2021/9/8 22:48
 * @Todo: 冒泡排序演示
 * @QQ:1300442386
 */
 public class Mian{
    public static void main(String[] args) {
   int[] arr = {6, 3, 8, 2, 9, 1};
        System.out.println("排序前數(shù)組為:" + Arrays.toString(arr));
        for (int s = 0; s < arr.length - 1; s++) {//外層循環(huán)控制排序趟數(shù)
            for (int k = 0; k < arr.length - 1 - s; k++) {//內(nèi)層循環(huán)控制每一趟排序多少次
                if (arr[k] > arr[k + 1]) {
                    int temp1 = arr[k];
                    arr[k] = arr[k + 1];
                    arr[k + 1] = temp1;
                }
            }
        }
        System.out.println("排序后數(shù)組為:" + Arrays.toString(arr));
         }
        }

結(jié)果為:

冒泡排序算法

到此這篇關(guān)于Java實(shí)現(xiàn)兩個(gè)隨機(jī)數(shù)組合并進(jìn)行排序的方法的文章就介紹到這了,更多相關(guān)Java 隨機(jī)數(shù)排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java兩個(gè)List的交集,并集方式

    java兩個(gè)List的交集,并集方式

    文章主要介紹了Java中兩個(gè)List的交集和并集的處理方法,推薦使用Apache的CollectionUtils工具類,因?yàn)樗唵吻也粫?huì)改變原有集合,同時(shí),文章還討論了Arrays.asList的局限性和JDK1.8中Stream新特性的使用
    2025-03-03
  • Java面試題沖刺第二十三天--分布式

    Java面試題沖刺第二十三天--分布式

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于分布式的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java?線程池狀態(tài)及狀態(tài)轉(zhuǎn)換

    java?線程池狀態(tài)及狀態(tài)轉(zhuǎn)換

    這篇文章主要介紹了java?線程池狀態(tài)及狀態(tài)轉(zhuǎn)換,Java里線程池的狀態(tài)和線程的狀態(tài)是完全不同的,具體有幾種狀態(tài)和哪些不同點(diǎn),下面文章詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Java springboot接口迅速上手,帶你半小時(shí)極速入門

    Java springboot接口迅速上手,帶你半小時(shí)極速入門

    這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)現(xiàn)API接口的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • 解讀@NotNull和@NonNull的區(qū)別及使用

    解讀@NotNull和@NonNull的區(qū)別及使用

    這篇文章主要介紹了解讀@NotNull和@NonNull的區(qū)別及使用,具有很好的參考價(jià)值,希望對大家有所幫助。
    2023-01-01
  • 基于Springboot2.3訪問本地路徑下靜態(tài)資源的方法(解決報(bào)錯(cuò):Not allowed to load local resource)

    基于Springboot2.3訪問本地路徑下靜態(tài)資源的方法(解決報(bào)錯(cuò):Not allowed to load local

    這篇文章主要介紹了基于Springboot2.3訪問本地路徑下靜態(tài)資源的方法(解決報(bào)錯(cuò):Not allowed to load local resource),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • springboot jar包外置配置文件的解決方法

    springboot jar包外置配置文件的解決方法

    這篇文章主要給大家介紹了關(guān)于spring boot jar包外置配置文件的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 教你如何用Eclipse創(chuàng)建一個(gè)Maven項(xiàng)目

    教你如何用Eclipse創(chuàng)建一個(gè)Maven項(xiàng)目

    這篇文章主要介紹了教你如何用Eclipse創(chuàng)建一個(gè)Maven項(xiàng)目,文中有非常詳細(xì)的代碼示例,對正在入門Java的小伙伴們是非常有幫助的喲,需要的朋友可以參考下
    2021-05-05
  • Java實(shí)現(xiàn)文件批量重命名具體實(shí)例

    Java實(shí)現(xiàn)文件批量重命名具體實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)文件批量重命名具體實(shí)例,需要的朋友可以參考下
    2014-02-02
  • @ConfigurationProperties在IDEA中出現(xiàn)紅色波浪線問題解決方法

    @ConfigurationProperties在IDEA中出現(xiàn)紅色波浪線問題解決方法

    本文介紹了在Springboot項(xiàng)目中,當(dāng)@ConfigurationProperties注解出現(xiàn)紅色波浪線時(shí)的解決方法,文中有詳細(xì)的解決方案供大家參考,需要的朋友可以參考下
    2024-09-09

最新評(píng)論

新民市| 彩票| 阿克苏市| 西平县| 哈巴河县| 邯郸市| 永清县| 江华| 乡宁县| 沽源县| 平顺县| 桐城市| 林口县| 循化| 四会市| 高要市| 安徽省| 阳原县| 镇雄县| 宣城市| 墨玉县| 三穗县| 岳西县| 涞源县| 南澳县| 阿克陶县| 许昌县| 新丰县| 麦盖提县| 招远市| 竹北市| 越西县| 绥化市| 汕尾市| 刚察县| 固阳县| 婺源县| 泰州市| 金塔县| 三台县| 巴塘县|