最近寫乙個簡單的排序,就用冒泡就行,結果忘了。於是就重新思考寫了一下。
隨手寫出乙個,竟然寫完後有點懵了,到底寫的對不對呢。為方便,用matlab進行驗證,並檢視了網上流行的寫法。
都寫在下面,其中,自認為第二種為最容易理解。當然,3種寫法,交換次數完全相同,交換之後結果完全相同。
程式如下
clc;clear all;close all
n=2000;
b = rand(1,n);
%% 自己以前寫的排序演算法,但自己已經搞不清原理了
a=b;num1=0;
for i=1:n
for j=1:i
if a(i)a(j)
t=a(i);
a(i) = a(j);
a(j) = t;
num2 = num2+1;
endend
enda2=a;
%% 網上的氣泡排序
a=b;num3=0;
for i=1:n-1
for j=1:n-i
if a(j)>a(j+1)
t=a(j+1);
a(j+1) = a(j);
a(j) = t;
num3 = num3+1;
endend
enda3=a;
[num1,num2,num3]
執行結果 981998 981998 981998 三種氣泡排序
package com.wxh617.sort public class bubblesort public static void main string args 1.最簡單的氣泡排序演算法,沒有技術含量 本例中排序6趟 public static void bubblesort1 int a ...
(排序)氣泡排序的三種實現
主要內容 1 氣泡排序 2 氣泡排序實現1 3 氣泡排序實現2 4 氣泡排序實現3 氣泡排序是簡單的一種排序方法,效率低下,複雜度為o n 2 其具體的演算法流程如下 1 演算法需要對陣列遍歷n 1遍 2 在每一次遍歷中,比較前後相鄰元素的大小,如果第乙個比第二個大,則交換他們,這樣第一次遍歷之後陣...
氣泡排序三種實現方法
氣泡排序是非常容易理解和實現,以從小到大排序舉例 設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第 0個資料到 n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第 n 1個位置。3 n n 1 如果n不為0 就重複前面二步,否則排序...