選擇排序與冒泡排序區別與比較
https://blog.csdn.net/weixin_38277423/article/details/70304120
區別主要在交換的方式上
每一輪都把最大或最小的元素篩選出來放在相應的位置上 這是相同的
但是
對於每一輪
比如第一輪
要把1~n 中最大的那個放到n這個位置
冒泡法每次比較和移動相鄰的兩項
而選擇排序每次交換當前項和第n項
我把代碼寫出來你就懂了:
冒泡:
for i:=1 to n-1 do
if (a[i]>a[i+1]) then swap(i,i+1);
選擇:
for i:=1 to n-1 do
if (a[i]>a[n]) then swap(i,n);
(swap 表示交換)
總的來說,兩種排序比較的次數是相同的
但交換的次數,選擇排序是更少的
雖然兩者的時間復雜度都是 O(n^2)
但通常,選擇排序更快一點
冒泡排序是每一次都可能要交換
而選擇排序是在比較時記下a[i]的位置 最後來交換
所以他們的交換過程是不一樣的 而查找的過程是一樣的
選擇排序與冒泡排序區別與比較
相關推薦
選擇排序與冒泡排序區別與比較
The swap 時間復雜度 weixin 位置 篩選 可能 當前 article https://blog.csdn.net/weixin_38277423/article/details/70304120 區別主要在交換的方式上 每一輪都把最大或最小的元素篩選出來放在相
常用算法(二)選擇排序與冒泡排序
true .com sele mage ever 最終 不穩定排序 換來 ima 一、選擇排序 簡單選擇排序是最簡單直觀的一種算法,基本思想為每一趟從待排序的數據元素中選擇最小(或最大)的一個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。 在算法實現時,每
安卓快速排序與冒泡排序
java int end star ear cal ber instance pretty main 冒泡排序 private void swap(int[] arrays, int i, int j) { int temp;
C語言二分查找與冒泡排序
減少 stdio.h spa main while 特意 習慣 條件 string 今天數據結構上機課,老師給了我們幾個上個學期做過的C語言題,我驚訝的發現,之前會的算法,時間久了就忘記了,很尷尬,這也充分說明了 我C語言學習功底不夠紮實。所以,在課後,我認認真真重
用Java實現的選擇排序和冒泡排序
auth main sta -i str public java index 選擇 選擇排序 package cn.hxd.sort; /** * 選擇排序 * @author Administrator * */ public class SelectionSo
Java NIO與IO的區別和比較
選擇器 獲取 如果 得到 提供服務 單獨 每次 取數 details 現代的酒店服務方式跟傳統的區別有兩個:1、增加了一個角色,要有一個專門負責收集客人需求的人。NIO裏對應的就是Selector。2、由阻塞服務方式改為非阻塞服務了,客人吃著的時候服務員不用一直侯在客人旁邊
總結4種常用排序(快排、選擇排序、冒泡排序、插入排序)
快速排序 length 長度 遞歸 繼續 index 效率 第一個元素 自己 一、 選擇排序 概念理解: 在一個長度為3的數組中,在第一趟遍歷3個數據,找出其中最小的數值與第一個元素交換; 第二趟遍歷2個數據,找出其中最小的元素與第一個數交換(註意:這裏的第一個數是指遍歷
MSE與MAE的區別與如何選擇
mark下,講得非常好 http://rishy.github.io/ml/2015/07/28/l1-vs-l2-loss/ 參考:https://baijiaha
Java NIO與IO的區別和比較,NIO與IO執行緒池效能比較
傳統的socket IO中,需要為每個連線建立一個執行緒,當併發的連線數量非常巨大時,執行緒所佔用的棧記憶體和CPU執行緒切換的開銷將非常巨大。使用NIO,不再需要為每個執行緒建立單獨的執行緒,可以用一個含有限數量執行緒的執行緒池,甚至一個執行緒來為任意數量的連線服務。由於執行緒數量小於連線數量,所
排序(3)---------冒泡排序(C語言實現)
std 強調 tracking i++ oid printf pre rand() 執行 說到冒泡排序,大一的時候第一次學習這個排序算法,可能大家不知道,“冒泡”在我說的方言裏面是吹牛逼的意思。所以就認為這個排序算法特吹牛逼有木有。 相信大家對全部的排
深入了解DSP與ARM的區別與聯系
表示 同時 系統集成 信號處理 man 運行速度 行修改 alt 那種 深入了解DSP與ARM的區別與聯系 2011-09-30 12:49:43| 分類: 嵌入式の半入其室 | 標簽:體系結構 |舉報|字號 訂閱
交換排序之冒泡排序和快速排序
優秀 這就是 它的 效率比較 密碼 false 鏈接 特殊 應用 交換排序 所謂交換,就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置,交換排序的特點是:將鍵值較大的記錄向序列的尾部移動,鍵值較小的記錄向序列的前部移動。 排序入門之冒泡排序 冒泡排序
strcpy、strncpy與memcpy的區別與使用方法
flow class created 行為 ons return sizeof creat 數組 今天做題用到了這兩個函數,不是很懂,學習了下~ 轉自http://www.cnblogs.com/houjun/p/4913216.html 本文參考《C 標準庫》編寫。
PHP數據庫連接mysql與mysqli的區別與用法
close ace ase 二次 銷毀 數據庫 table name .cn 一、mysql與mysqli的概念相關: 1、mysql與mysqli都是php方面的函數集,與mysql數據庫關聯不大。 2、在php5版本之前,一般是用php的mysql函數去驅動mysq
Session與Cookie的區別與聯系
系統 數據 如果 多層 刪除 默認 重新 sqli nbsp 描述兩個事情的不同,一般先從概念入手,然後分析他們是怎麽生成、怎麽使用以及怎麽消亡的: 1、Cookie僅由客戶端生成、管理並使用,PHP只是發出指令要求客戶端如何生成Cookie、何時過期等,但是客戶端不一
排序_簡單排序_冒泡排序
str 中一 nbsp wap color new 指向 冒泡 temp 冒泡排序有三個記錄值,其中的兩個指向需要比較的兩個對象,其中一個指向需要排序的數值的末尾值。in,in+1,out public class ArrayBub { private long
排序 之 冒泡排序
-s i++ color lose for csdn 二次排序 pos fff 參考文章: http://blog.csdn.net/it_zjyang/article/details/53406764 http://blog.csdn.net/hacker00011000
java排序之冒泡排序
sort stat false sys 復雜度 turn random mat 記憶 代碼: 1 public class Test { 2 public static int[] bublle_sort(int a[]){ 3 for (i
四、 簡單排序之冒泡排序
sort mage bubble 如圖所示 class 簡單排序 源代碼 emp i++ 原理如圖所示(畫圖太醜將就看看): 源代碼: public class Bubblesort { public static void bubblesort(int
【排序】冒泡排序
pla 開始 當前 交換 2-2 OS -i 冒泡排序 ace # 基本思想(從小到大排序) 對於給定的n個元素,從第一個元素開始,依次對相鄰的兩個元素進行比較,當前面的記錄大於後面的元素,交換位置,進行一輪比較和移動後,n個元素中最大的元素位於第n位;然後對前n