當前位置:
首頁 >
抢红包算法 c++_十大排序算法(一):冒泡排序法
發布時間:2025/4/16
45
豆豆
生活随笔
收集整理的這篇文章主要介紹了
抢红包算法 c++_十大排序算法(一):冒泡排序法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:綠皮長條瓜
目錄
一、算法介紹
二、MATLAB實現
三、兩個例子
一、算法介紹
冒泡排序(Bubble Sort)算法是一種計算科學領域的較簡單的排序算法。它重復地走訪過要排序的元素列,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
算法步驟如下:
- step1:比較相鄰的元素,如果第一個比第二個大,就交換他們兩個。
- step2:對每一對相鄰元素做步驟step1,從開始第一對到結尾的最后一對。這步之后,最后的元素應該會是最大的數。
- step3:針對所有的元素重復以上的步驟,除了最后一個。
- step4:持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
二、MATLAB實現
利用MATLAB編寫bubble_sort()函數對數據進行排序,函數如下:
%Date:2019-4-15%Writer:綠皮長條瓜%%本程序的目的是利用冒泡排序算法對已知某組數字或字母(根據ACSII碼)進行排序function y = bubble_sort(A) %參數A為向量或矩陣n = numel(A); %n為A中數字或字母的個數E = A;A = reshape(A, n, 1); %令A重組為向量B = 1:n;if isletter(A) == zeros(size(A,1),size(A,2)) %待排序數據為數字 flag = 0;elseif isletter(A) == ones(size(A,1),size(A,2)) %待排序數字為字母,根據ASCII碼從小到大排序情況 A = int2str(A); %計算字母對應的ASCII碼 A = str2num(A); flag = 1;else errordlg('輸入參數不符合要求!', 'Warning!')endA = [A,B'];for i = 1:n-1 for j = 1:n-i if A(j) > A(j+1); temp = A(j,:); %核心代碼 A(j,:) = A(j+1,:); A(j+1,:) = temp; end endendA = A(:,2);fprintf('經冒泡排序算法排序后的結果如下:') %輸出排序結果for i = 1:n if flag == 0 fprintf('%f ', E(A(i))) else fprintf('%c ', E(A(i))) end if mod(i,8) == 0 fprintf('') endendfprintf('')end三、兩個例子
例1:對矩陣A中各元素利用冒泡排序法從小到大進行排序。利用MATLAB調用上述函數排序結果如下:
>> A = [1 5 6 3;15 4 6 8;9 17 13 11];>> bubble_sort(A)經冒泡排序算法排序后的結果如下:1.000000 3.000000 4.000000 5.000000 6.000000 6.000000 8.000000 9.000000 11.000000 13.000000 15.000000 17.000000例2:對字符串向量B中各字母按照ASCII碼利用冒泡排序法從小到大進行排序。利用MATLAB調用上述函數排序結果如下:
>> B = ['Yida', 'Chen'];>> bubble_sort(B)經冒泡排序算法排序后的結果如下:C Y a d e h i n歡迎關注本人公眾號:Python無憂
總結
以上是生活随笔為你收集整理的抢红包算法 c++_十大排序算法(一):冒泡排序法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快准牌电脑发软件_这些软件,电脑安装了,
- 下一篇: c++求矩阵的秩_一篇文章搞定矩阵相关概