算法day03 桶排序 數據結構分類 時間復雜度 異或運算

?學數據結構之前 必看_嗶哩嗶哩_bilibili

1.認識復雜度和簡單排序算法_嗶哩嗶哩_bilibili

桶排序(Bucket sort)------時間復雜度為O(n)的排序方法(一)_多桶排序時間復雜度-CSDN博客

?桶排序

????????測試場景:數組中有10000個隨機數,范圍在(0-100000)

????????使用100個桶,每個桶存放的數據范圍為:0-999, 1000-1999, 2000-2999,依次類推

public class BucketSort {public static void bucketSort(int[] data){//新建100個桶int bucketSize = 100;ArrayList<ArrayList<Integer>> buckets = new ArrayList<>(bucketSize);for (int i = 0; i < bucketSize; i++) {buckets.add(new ArrayList<>());  //0-99}//遍歷數據,將數據放到桶中for (int i : data) {  //0-10000buckets.get(i / 1000).add(i);}//在桶內部進行排序int k = 0;for (int i = 0; i < bucketSize; i++) {ArrayList<Integer> list = buckets.get(i);Integer[] num = list.toArray(new Integer[1]);Arrays.sort(num);//拷貝到data中for (int n : num) {data[k++] = n;}}}public static void main(String[] args) {Random random = new Random();int[] data = new int[10000];for (int i = 0; i < data.length; i++) {data[i] = random.nextInt(100000);}BucketSort.bucketSort(data);System.out.println(Arrays.toString(data));}}

??



數據結構分類

時間復雜度

? ? ? ? 對于有n個元素的數組。

? ? ? ? ????????選擇排序:

????????????????????????循環一次進行n次比較,找出一個最小值。

????????????????????????再循環一次進行n-1次比較找出次小值。

? ? ? ? ? ? ? ? ? ? ? ? 。。。

? ? ? ? ? ? ? ? ? ? ? ? 這樣的循環有n次,每輪循環進行n次,n-1次。。。1次比較

? ? ? ? ? ? ? ? ? ? ? ? 時間復雜度計算:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?循環復雜度:n+n-1+n-2+...+1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 比較復雜度:n+n-1+n-2+...+1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 合計為一個等差數列? an^2+bn+C

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用極限的思維,時間復雜度考慮最壞情況,只看最高項。時間復雜度為o(n^2)

? ? ? ????????? 冒泡排序:

? ? ? ? ? ? ? ? ? ? ? ? 假設排序規則為升序

? ? ? ? ? ? ? ? ? ? ? ? 從左往右進行一次循環,相鄰兩個數進行比較交換位置。進行了n-1次比較。第一次循環肯定確定了最右邊一個元素。

????????????????????????再循環一次進行n-2次確定次右邊一個元素。

? ? ? ? ? ? ? ? ? ? ? ? 。。。

? ? ? ? ? ? ? ? ? ? ? ? 這樣的循環有n次,每輪循環進行n-1次,n-2次。。。1次比較

? ? ? ? ? ? ? ? ? ? ? ? 時間復雜度計算:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?循環復雜度:n-1+n-2+...+1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 比較復雜度:n-1+n-2+...+1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 合計為一個等差數列? an^2+bn+C

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用極限的思維,時間復雜度考慮最壞情況,只看最高項。時間復雜度為o(n^2)

異或運算? 無進位相加

? ? ? ? 兩數交換值

? ? ? ? ? ? ? ? ? ? ? 異或運算相比用直接相加的方式來說是沒有用到第三個臨時參數來儲存值,并且位運算是直接操作內存地址,比加減乘除都要快。

? ? ? ? ? ? ? ? ? ? ? 前提條件是a,b不能是同一個內存地址,而不是說a,b值相等就不能進行位運算相加。因為a,b同內存的話,操作a或者b同時改變了兩者的值都歸零了。

? ? ? ? ? ? ? ? ? ? ? int a,b;? ????????

? ? ? ? ? ? ????????? a = a^b

? ? ? ? ? ? ????????? b = a^b

? ? ? ? ? ? ????????? a = a^b

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44844.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44844.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44844.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

threeJS 為模型增加精靈圖

前言 之前使用css3DRender創建圖片彈框&#xff0c;在旋轉模型到背面時&#xff0c;彈框也背對模型&#xff0c;這與UI要求的效果有出入。考慮將css3DRender換成css2Drender,但是可能是模型的問題&#xff0c;將彈框加入到模型的子集&#xff0c;旋轉模型時彈框發生比較明顯的…

deep learning 環境配置

1 NVIDIA驅動安裝 ref link: https://blog.csdn.net/weixin_37926734/article/details/123033286 2 cuda安裝 ref link: https://blog.csdn.net/qq_63379469/article/details/123319269 進去網站 https://developer.nvidia.com/cuda-toolkit-archive 選擇想要安裝的cuda版…

研華PCI-1711板卡在WIN10教育版系統無法安裝驅動

主要配置&#xff1a;CHIPSET AIMB-705G2、CPU I5-6500、WIN10 教育版、PCI-1711 問題描述&#xff1a;使用官網下載的驅動XNiva&#xff0c;驅動包安裝完成后板卡無法正常識別。解決方法&#xff1a;正常安裝無法情況下只能嘗試強制安裝數字簽名&#xff0c;步驟如下。 XNiv…

Gunicorn:Python Web應用的高效生產服務器

引言 在現代Web開發中&#xff0c;部署Python Web應用通常需要一個既高效又可靠的服務器。Gunicorn&#xff08;Green Unicorn&#xff09;是一個Python WSGI HTTP服務器&#xff0c;它簡單、快速且易于使用&#xff0c;非常適合生產環境。本文將介紹Gunicorn的基本概念、安裝…

Springboot redisson 自定義注解實現雙寫一致性

在 Spring Boot 項目中使用 Redisson 實現雙寫一致性&#xff08;即數據庫和緩存的一致性&#xff09;&#xff0c;可以通過自定義注解和 AOP&#xff08;面向切面編程&#xff09;來簡化代碼并提高可維護性。以下是一個具體的案例&#xff0c;展示了如何使用自定義注解和 AOP …

Java研學-Shiro安全框架(四)

六 SpringBoot集成Shiro認證 1 分析 Shiro提供認證授權功能&#xff0c;所以SpringBoot中不需再編寫自定義注解&#xff0c;權限攔截&#xff0c;登錄攔截&#xff0c;登錄登出。Shiro 環境中有三個封裝對象Subject &#xff0c;SecurityManager和Realms&#xff0c;SpringBoo…

Java核心技術【二十一】Java的I/O流處理:文件的讀寫操作

Java的I/O流處理&#xff1a;文件讀寫操作 【創作】 不易&#xff0c;【點贊】 是情義&#xff0c;【關注】 是動力&#xff0c;【收藏】 是回憶。 示例代碼地址&#xff1a;https://gitee.com/code-in-java/csdn-blog.git 在Java編程中&#xff0c;輸入/輸出&#xff08;I/O&a…

PyTorch實現BERT預訓練模型轉化指南

huggingface官方的介紹&#xff1a; https://huggingface.co/transformers/converting_tensorflow_models.html 直接用命令行 把箭頭處路徑改為自己放原有tf版本預訓練模型的路徑 回車后會有一大堆提示&#xff0c;然后發現路徑下多了一個bin文件&#xff0c;加上原本的config…

順序結構 ( 六 ) —— 順序結構實例 【互三互三】

&#x1f680;歡迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e;&#x1f680;所屬專欄&#xff1a;C教程&#x1f48e; &#x1f680;關注博主&#xff0c;后期持續更新系列文章 &#x1f680;如果有錯誤感謝請大家批評指出&#xff0c;及時修改 &am…

iNavFlight飛控固件學習-1《開發環境搭建》

目錄 文章目錄 目錄摘要1.官網2.形成Linux開發環境工具2.1 簡介2.2 相關工具2.2.1 Ubuntu / Debian系統配置命令2.2.2 Fedora系統配置命令2.2.3 Fedora系統配置命令 2.3 克隆存儲庫2.4 構建工具2.5 使用cmake2.6 構建固件2.7 清除2.8 cmake 緩存維護2.9 編譯通過ninja2.10 更新…

js 日期比較大小

在JavaScript中&#xff0c;比較日期大小通常涉及將日期轉換為時間戳&#xff08;自1970年1月1日以來的毫秒數&#xff09;&#xff0c;然后比較這些時間戳。這是因為直接比較兩個Date對象可能不會按預期工作&#xff0c;特別是如果你試圖了解哪個日期在另一個日期之前或之后。…

紅酒與未來科技:傳統與創新的碰撞

在歲月的長河中&#xff0c;紅酒以其深邃的色澤、豐富的口感和不同的文化魅力&#xff0c;成為人類文明中的一顆璀璨明珠。而未來科技&#xff0c;則以其迅猛的發展速度和無限的可能性&#xff0c;領著人類走向一個嶄新的時代。當紅酒與未來科技相遇&#xff0c;一場傳統與創新…

2024.07.03校招 實習 內推 面經

綠*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;內推/實習/校招匯總表格 1、提前批 | 中國兵器工業集團第二〇二研究所 | 提前批/招/聘暨/暑期/開放日 提前批 | 中國兵器工業集團第二〇二研究所 | 提前批招聘暨暑期開放日 2、夏令營 | 2024年南網數字集團“未來…

ADI新型充電器解決方案可實現電池堆電壓和充電效率

就目前而言&#xff0c;這可能是生活中zui常見的問題了。世紀之交&#xff0c;電池&#xff08;尤其是基于鋰離子的電池&#xff09;成本的降低和性能的提高&#xff0c;推動了電池供電的儲能和便攜式設備的穩步增長。此外&#xff0c;超級電容器由于具有獨特的性質&#xff0c…

oppo25屆秋招,快手25屆技術人才專項計劃內推

oppo25屆秋招&#xff0c;快手25屆技術人才專項計劃內推 ①【OPPO】25屆秋招開啟&#xff01; 內推簡歷優先篩選&#xff01; &#x1f449;崗位類別&#xff1a;AI/算法類&#xff0c;軟件類&#xff0c;硬件類&#xff0c;工程技術類&#xff0c;品牌策劃類&#xff0c;設計類…

骨傳導耳機最熱門好用款推薦,選購骨傳導耳機前不能忽略的六大細節

如今的社會在耳機種類方面可以說是越來越多&#xff0c;于是很多人在挑選的時候往往選擇不到適合自己的一款耳機&#xff0c;尤其是在近些年來席卷耳機市場的骨傳導耳機&#xff0c;開放耳道的設計在很多時候佩戴無異于是更加的適合&#xff0c;正好小編這邊對于比較熱門的幾款…

社交App iOS審核中的4.3問題:深入分析與解決策略

社交App審核中的4.3問題&#xff1a;深入分析與解決策略 在iOS應用開發和審核過程中&#xff0c;開發者經常會遇到蘋果審核4.3問題。這一問題往往涉及應用的設計和內容重復性&#xff0c;導致應用被拒絕上架。為了幫助開發者更好地理解和解決這一問題&#xff0c;本文將對4.3問…

動漫3d模型設計需要注意什么?---模大獅模型網

設計動漫3D模型時&#xff0c;有幾個方面需要注意&#xff1a; 保持角色風格一致性&#xff1a; 動漫通常有獨特的風格和美學&#xff0c;設計時要確保模型與所代表的角色或作品的整體風格相符。注意保持線條和比例的一致性&#xff0c;使模型能夠忠實地呈現原作的特點。 注重…

springboot餐飲管理系統-計算機畢業設計源碼43667

摘 要 在信息化、數字化的時代背景下&#xff0c;餐飲行業面臨著前所未有的挑戰與機遇。為了提高運營效率、優化顧客體驗&#xff0c;餐飲企業亟需一套高效、穩定且靈活的管理系統來支撐其日常運營。基于Spring Boot的餐飲管理系統應運而生&#xff0c;成為餐飲行業數字化轉型的…

Python基礎教學之一:入門篇——邁入編程世界的第一步

Python基礎教學之一&#xff1a;入門篇——邁入編程世界的第一步 一、Python簡介&#xff1a;歷史與現狀 Python&#xff0c;一種解釋型、高級和通用的編程語言&#xff0c;由Guido van Rossum在1989年圣誕節期間創造&#xff0c;并于1991年首次發布。設計哲學強調代碼的可讀性…