當前位置:首頁 » 網頁前端 » 前端冒泡排序圖
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端冒泡排序圖

發布時間: 2022-09-10 11:12:08

① 什麼叫做冒泡排序

冒泡排序★★★★★★
#include<stdio.h>
#define N 5
void main()
{
int i,j;
int grade[N],temp;
printf("輸入5個數\n");
for(i=0;i<N;i++)
{
scanf("%d",&grade[i]);
}
for(i=0;i<N;i++)
{
for(j=0;j<N-1-i;j++)
{
if(grade[j]<grade[j+1])
{
temp=grade[j+1];
grade[j+1]=grade[j];
grade[j]=temp;
}
}
}
printf("最後排序為:\n");
for(i=0;i<N;i++)
{
printf("%d",grade[i]);
}
printf("\n");
}
#include<stdio.h> //鏈接標准頭文件
#define N 5 //定義常量N並賦值為5
void main() //主函數入口
{ //表示主函數開始
int i,j; //定義整形變數i和j
int grade[N],temp; //定義N維(N=5,也就是五維啦^^)整形數組和整形變數temp
printf("輸入5個數\n"); //在屏幕上顯式「輸入5個數」並且換行
for(i=0;i<N;i++) //開始for循環,從i=0,每次加1,直到i=4,共需循環5次
{ //循環體開始
scanf("%d",&grade[i]); //依次獲取用戶輸入的整數值並存入數組grade中
} //循環結束
for(i=0;i<N;i++) //開始外層for循環,從i=0,每次加1,直到i=4
{ //外層循環體開始
for(j=0;j<N-1-i;j++) //開始外層for循環,從j=0,每次加1直到i等於外層循環的N-j-1
{ //內層循環體開始
if(grade[j]<grade[j+1]) //條件判斷
{ //如果整形數組前面的數比其後的小,執行以下語句
temp=grade[j+1]; //將比較大的數賦值給temp
grade[j+1]=grade[j]; //將比較小的數賦值給數組中後面的變數
grade[j]=temp; //將比較大的數賦值給數組中前面的變數
} //從此便完成大小變數的交換,使得大值往前放
} //結束內層循環
} //結外內層循環,完成排序
printf("最後排序為:\n");//在屏幕顯式「最後排序為:」並換行
for(i=0;i<N;i++) //同開始的for循環類似
{ //開始循環輸出
printf("%d",grade[i]); //只是這里要逐個輸出數組中的五個數值
} //結束循環輸出
printf("\n"); //輸出換行到屏幕,看不到什麼效果,可刪掉
} //結束main()函數

② 冒泡排序升序和降序步驟

  • /** 冒泡升序排序 **/

    public static int[] ascSort(int[] param) {

    int in, out;

    int temp = 0;

    for (out = param.length; out > 0; out--) {

    for (in = 0; in < out - 1; in++) {

    if (param[in] > param[in + 1]) {

    temp = param[in];

    param[in] = param[in + 1];

    param[in + 1] = temp;

    }

    }

    }

    return param;

    }

  • 2

    /** 冒泡降序排序 **/

    public static int[] descSort(int[] param) {

    int in, out;

    int temp = 0;

    for (out = 0; out < param.length; out++) {

    for (in = param.length - 1; in > out; in--) {

    if (param[in] > param[in - 1]) {

    temp = param[in];

    param[in] = param[in - 1];

    param[in - 1] = temp;

    }

    }

    }

    return param;

    }

  • 3

    執行升序和降序方法:

    public static void main(String[] args) {

    int[] param = { 1, 6, 7, 5 };

    param = ascSort(param);

    System.out.print("升序結果為:");

    for (int i = 0; i < param.length; i++) {

    System.out.print(param[i]);

    }

    System.out.println("");

    param = descSort(param);

    System.out.print("降序結果為:");

    for (int i = 0; i < param.length; i++) {

    System.out.print(param[i]);

    }

    }

  • 4

    運行結果如下:

  • 注意事項

  • 冒泡排序的效率為O(N*N),比較次數最多為N(N-1)/2,交換次數最多為N(N-1)/2,其中N代表需要比較的數的個數;

  • 冒泡排序是一種以時間換空間的排序方法,最壞的情況是把順序的排列變成倒序,把倒序的排列變成順序,此時每次比較運算都要進行交換;

  • 冒泡排序的效率和時間復雜度有關的,時間復雜度越大,則執行的效率就越低;

  • 在冒泡演算法中,若演算法中語句執行次數為一個常數,則時間復雜度為O(1);

  • 在時間頻度不相同的情況下,時間復雜度有可能是相同的,如T(n)=n*n+2n+3與T(n)=n*n+5n+10時間頻度不相同,則時間復雜度都是O(n*n)

③ 怎樣排序

  1. 冒泡排序是一種簡單的排序演算法,就地排序。實現原理也很簡單:重復地遍歷要排序的數列,一次比較兩個元素,如果兩個元素根據某種排序策略相對位置錯誤,那麼就交換這兩個元素的位置。遍歷的操作重復進行直到不需要再進行任何交換,也就是說數列已經成為一種有序數列呢。

  2. 接下來我們通過圖示的方式來說明冒泡排序的過程,以下是第一輪冒泡排序過程:

    voidbubbleSort(intarr[],intcount){
    inti,j,temp,tag;//tag用於記錄當前冒泡排序進行比較的終止位置
    tag=count-1;
    for(i=0;i<count-1;i++){
    for(j=0;j<tag;j++){
    if(arr[j]>arr[j+1]){
    temp=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=temp;
    }
    }
    tag--;//下一輪排序進行比較的終止位置
    }
    }

    ④ Web前端工程師你知道JavaScript中常用的排序演算法嗎

    今天小編要跟大家分享的文章是關於JavaScript中常用的排序演算法。相信很多剛剛從事Web前端工作或者准備面試的小夥伴們對此還不是很了解,下面就讓小編來為大家介紹一下吧!


    一、冒泡排序


    冒泡排序是我們在編程演算法中,算是比較常用的排序演算法之一,在學習階段,也是最需要接觸理解的演算法,所以我們放在第一個來學習。


    演算法介紹:


    ·___冉舷嗔詰牧礁鱸,如果前一個比後一個大,則交換位置。


    ·___諞宦職炎畲蟮腦胤諾攪俗詈竺妗


    ·___捎諉看聞判蜃詈笠桓齠際親畲蟮模災蟀湊詹街1排序最後一個元素不用比較。

    冒泡演算法改進:


    設置一個標志,如果這一趟發生了交換,則為true。否則為false。如果這一趟沒有發生交換,則說明排序已經完成。代碼如下:

    假如數組長度是20,如果只有前十位是無序排列的,後十位是有序且都大於前十位,所以第一趟遍歷排序的時候發生交換的位置必定小於10,且該位置之後的必定有序,我們只需要排序好該位置之前的就可以,因此我們要來標記這個位置就可以了,即可以記錄每次掃描中最後一次交換的位置,下次掃描的時候只要掃描到上次的最後交換位置就行了,因為後面的都是已經排好序的,無需再比較,代碼如下:

    每一次循環從兩頭出發算出最大和最小值,代碼如下:

    在代碼3的基礎上記錄每次掃描最後一次交換的位置,下次掃描的時候只要掃描到上次的最後交換位置就行,同代碼2,代碼如下:

    二、快速排序


    演算法介紹:


    快速排序是對冒泡排序的一種改進,第一趟排序時將數據分成兩部分,一部分比另一部分的所有數據都要小。然後遞歸調用,在兩邊都實行快速排序。

    三、選擇排序


    演算法介紹:


    選擇排序就是從一個未知數據空間里,選取之最放到一個新的空間

    四、插入排序


    演算法介紹:


    ·___擁諞桓瞿媳慌藕眯虻腦乜


    ·___〕魷亂桓鱸兀諞丫判虻腦匭蛄兄寫雍笙蚯吧_


    ·___綣雅判虻腦卮笥諶〕齙腦兀蚪浞直鶼蚝笠貧晃


    ·___鋇秸業揭雅判虻腦刂行∮諢虻扔諶〕齙腦兀〕齙腦胤諾剿暮笠晃


    ·___馗床街2

    插入排序演算法改進-二分法插入排序:

    以上就是小編今天為大家分享的JavaScript中常用的排序演算法的文章,文章中介紹的是四種比較基礎的排序方法,JavaScript的排序演算法還有很多,這是我們4種最常見也是最基本的演算法,掌握理解好,在面試和開發中也能從容應對了。想要了解更多Web前端知識記得關注北大青鳥Web培訓官網哦。最後祝願小夥伴們工作順利!


    本文轉自前端研究所。


    *聲明:內容與圖片均來源於網路(部分內容有修改),版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。

    ⑤ 冒泡排序 搞蒙了!求詳細解說! 此圖為例

    冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序演算法。
    它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。
    這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名。
    演算法原理

    冒泡排序演算法的運作如下:(從後往前)
    比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
    對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
    針對所有的元素重復以上的步驟,除了最後一個。
    持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

    ⑥ 起泡法排序

    1.起泡排序演算法的原理 起泡排序是交換排序的一種,其基本方法是:設待排序元素列中元素...
    2.起泡排序的基本演算法
    3.template<classT>
    4.voidBubbleSort(T arr[],intn){
    5.起泡排序的時間復雜度分析 起泡排序演算法中,第i趟起泡需要執行n-i次比較和交換操作。因此,i從1到n-1,執行的比較操作的次數為: (n-1)+(n-2)+ …...

    ⑦ 冒泡排序流程圖

    冒泡第一次:14 15 28 5 10 30
    冒泡第二次:14 15 5 10 28 30
    冒泡第三次:14 5 10 15 28 30
    冒泡第四次:5 10 14 15 28 30

    選擇排序我忘記了!