今天在看資料結構的時候,剛好看到資料結構中的氣泡排序和選擇排序。
現在就把關於氣泡排序和選擇排序進行總結,免得自己以後忘記。
氣泡排序:它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。
氣泡排序可以從最後乙個元素開始,以此比較兩個相鄰的值,誰的值小,就在前面,當一趟比較晚的時候,陣列中最小的數字就在第乙個元素的位置上,以此進行迴圈,可以總結如下:
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從最後一對到開始的第一對。在這一點,開始的元素應該會是最小的數。
針對所有的元素重複以上的步驟,除了最後乙個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
public static void sort(long arr){
long tem = 0;
//這是第幾趟
for(int i = 0;ii;j--){
if(arr[j]每一次從待排序的
資料元素
中選出最小(或最大)的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法(比如序列[5, 5, 3]第一次就將第乙個[5]與[3]交換,導致第乙個5挪動到第二個5後面)。
我們先假設陣列的第乙個元素是最小的,定義乙個值k記錄第乙個的下標,然後開始迴圈,從第二個數開始迴圈,當第二個數比第乙個數小的時候,k指向第二個數,以此類推,迴圈一趟下來,k指向的數比第乙個數小,這時候進行數值的交換。以此進行迴圈,
可以總結為:
對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次比較,前面「後乙個元素」現變成了「前乙個元素」,繼續跟他的「後乙個元素」進行比較如果後面的元素比他要小則用變數k記住它在陣列中的位置(下標),等到迴圈結束的時候,我們應該找到了最小的那個數的下標了,然後進行判斷,如果這個元素的下標不是第乙個元素的下標,就讓第乙個元素跟他交換一下值,這樣就找到整個陣列中最小的數了。然後找到陣列中第二小的數,讓他跟陣列中第二個元素交換一下值,以此類推。
public static void sort(long arr){
int k = 0;
long tem;
for(int i = 0;i
資料結構和演算法 氣泡排序和選擇排序
package com.test 1 public class demo5 3 int temp 0 中間值 氣泡排序法 外層迴圈,它決定一共走幾趟 for int i 0 i1 i 輸出結果 for int i 0 iout.print arr i 第一次從r 0 r n 1 中選取最小值,與r ...
資料結構之簡單演算法(氣泡排序 選擇排序 插入排序)
簡單的js資料 實現氣泡排序 1.定義乙個簡單的無序陣列 var num 12,13,10,31,11,19 2.反向迴圈,每次剔除最右邊的數,因此次數越來越少 for var j num.length 1 j 0 j 選擇排序是對氣泡排序的改進,比氣泡排序的效率高一點,但與其他演算法比較效率較低 ...
資料結構之基礎排序(選擇排序 插入排序 氣泡排序)
排序在 中用的非常普遍,所以今天我們來學下最基礎的三種排序,如果你已經爛熟於心,請跳過本文。注 我的 一般沒有注釋,我覺得沒啥必要,都是基礎挺簡單的。include include void print int array,int len printf n void swap int array,i...