冒泡排序的演算法
❶ 冒泡排序
冒泡排序(Bubble Sort)是一種典型的交換排序演算法,通過交換數據元素的位置進行排序。
一、演算法基本思想
(1)基本思想
冒泡排序的基本思想就是:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的數據元素交換到了無序隊列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有數據元素都排好序。
演算法的核心在於每次通過兩兩比較交換位置,選出剩餘無序序列里最大(小)的數據元素放到隊尾。
(2)運行過程
冒泡排序演算法的運作如下:
1、比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大(小)的數。
3、針對所有的元素重復以上的步驟,除了最後已經選出的元素(有序)。
4、持續每次對越來越少的元素(無序元素)重復上面的步驟,直到沒有任何一對數字需要比較,則序列最終有序。
(3)示例
java 的如何實現冒泡演算法呢?
其實有兩種方法
一種是正序
/*
* 正序冒泡
* */
public static void sortListAsc(Integer[] list){
if(list.length>0){
for(int i=0;i
for(int j=0;j
int exchange=0;
if(list[j]>list[j+1]){
exchange= list[j+1];
list[j+1]=list[j];
list[j]=exchange;
}
}
}
}
for(Integer k:list){
System.out.println(k);
}
}
一種是反序
/*
* 反序冒泡
* */
public static void sortListDesc(Integer[] list){
if(list.length>0){
for(int i=(list.length-1);i>0;i--){
for(int j=(list.length-1);j>0;j--){
int a=0;
if(list[j]
a=list[j-1];
list[j-1]=list[j];
list[j]=a;
}
}
}
}
}
雖然實現的目標是相同的,但是實現的原理也一樣 只不過流程是逆向的
完成之後便是如此
如果使用Stiring 字元串的compareTo 也可以是實現類似功能
不過這個比較的是字元串的ASCII碼值的大小 ,可以應用於數字字元串的比較, 如此冒泡依舊可以使用。
//實現字元串的冒泡
public static String[]sortAscII(String[] list){
if(list.length>0){
for(int i=(list.length-1);i>0;i--){
for(int j=(list.length-1);j>0;j--){
String a="";
if(list[j].compareTo(list[j-1])<0 ){
a=list[j-1];
list[j-1]=list[j];
list[j]=a;
}
}
}
}
return list;
}
❷ 冒泡排序的演算法原理
冒泡排序演算法的運作如下:(從後往前) 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。 針對所有的元素重復以上的步驟,除了最後一個。 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
❸ 什麼是冒泡排序法
冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重復以上過程,直至最終完成排序。
❹ 冒泡排序
冒泡排序的英文Bubble Sort,是一種最基礎的交換排序。之所以叫做冒泡排序,因為每一個元素都可以像小氣泡一樣,根據自身大小一點一點向數組的一側移動。
冒泡排序是一種簡單的排序演算法,它也是一種穩定排序演算法。其實現原理是重復掃描待排序序列,並比較每一對相鄰的元素,當該對元素順序不正確時進行交換。一直重復這個過程,直到沒有任何兩個相鄰元素可以交換,就表明完成了排序。
一般情況下,稱某個排序演算法穩定,指的是當待排序序列中有相同的元素時,它們的相對位置在排序前後不會發生改變。
泡排序的原理:
每一趟只能確定將一個數歸位。即第一趟只能確定將末位上的數歸位,第二趟只能將倒數第2位上的數歸位,依次類推下去。如果有n個數進行排序,只需將n-1個數歸位,也就是要進行n-1趟操作。
而「每一趟」都需要從第一位開始進行相鄰的兩個數的比較,將較大的數放後面,比較完畢之後向後挪一位繼續比較下面兩個相鄰的兩個數大小關系,重復此步驟,直到最後一個還沒歸位的數。
❺ 什麼是冒泡排序演算法
冒泡排序演算法:重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。
這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「冒泡排序」。
(5)冒泡排序的演算法擴展閱讀:
冒泡排序演算法的原理如下:
1,比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2,對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
3,針對所有的元素重復以上的步驟,除了最後一個。
4,持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
❻ 冒泡排序
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序演算法。
它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「冒泡排序」。
冒泡排序演算法的原理如下:
1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2、對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
3、針對所有的元素重復以上的步驟,除了最後一個。
4、持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
❼ c語言冒泡排序是什麼
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序演算法。
它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。
這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名。
演算法原理編輯
冒泡排序演算法的運作如下:(從後往前)
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最後一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較
#include<stdio.h>
#define SIZE 8
voidbubble_sort(inta[],intn);
voidbubble_sort(inta[],intn)//n為數組a的元素個數
{
inti,j,temp;
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(a[i]>a[i+1])//數組元素大小按升序排列
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
intmain()
{
intnumber[SIZE]={95,45,15,78,84,51,24,12};
inti;
bubble_sort(number,SIZE);
for(i=0;i<SIZE;i++)
{
printf("%d",number[i]);
}
printf("\n");
}
❽ 冒泡排序法
用冒泡排序法對n個關鍵碼排序,在最好的情況下也就是數據按關鍵碼排序次序有序,只需要依次從頭到尾挨個比較就可以了,因此比較次數為n-1次,關鍵碼不移動,所以0次移動
在最壞的情況下為關鍵碼按排序順序完全逆序,第k趟都有n-k個關鍵碼比較,
因此數據一共要做n*(n-1)/2次比較,移動次數則為3n*(n-1)/2
這樣就是錯誤A
❾ 冒泡排序法是如何排序的
冒泡排序演算法的原理:
1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2、對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
3、針對所有的元素重復以上的步驟,除了最後一個。
4、持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
(9)冒泡排序的演算法擴展閱讀:
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序演算法。
它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「冒泡排序」。
演算法穩定性:
冒泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,是不會再交換的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以冒泡排序是一種穩定排序演算法。
❿ 冒泡排序法是什麼
冒泡排序的英文Bubble Sort,是一種最基礎的交換排序。
大家一定都喝過汽水,汽水中常常有許多小小的氣泡,嘩啦嘩啦飄到上面來。這是因為組成小氣泡的二氧化碳比水要輕,所以小氣泡可以一點一點向上浮動。而我們的冒泡排序之所以叫做冒泡排序,正是因為這種排序演算法的每一個元素都可以像小氣泡一樣,根據自身大小,一點一點向著數組的一側移動。
冒泡排序演算法的原理如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最後一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
具體如何來移動呢?讓我們來看一個栗子:
希望對您有所幫助!~