本文目錄一覽:
- 1、c語言 冒泡法是什麼啊
- 2、c語言編程改進冒泡排序,讓冒泡排序一旦排好序就停止循環,提高程序的效率?
- 3、C語言編程:改進冒泡排序程序,使其當數據已經有序時,直接結束排序過程。請給出運算結果。
- 4、優化的冒泡排序c語言
- 5、C語言的冒泡算法改進
- 6、C語言中冒泡法的改進問題
c語言 冒泡法是什麼啊
冒泡法是排序的一種方法,冒泡法和冒泡排序實是一個定義.之所以叫冒泡法,即是像在水中的氣泡一樣,在一輪兩數比較之後將最小(或最大的數字)排在一列數的左邊(當然右邊也行,總之是一邊).然後排開這個數,經過N-2排開之後,整列數的大小就是按順序來的.
c語言編程改進冒泡排序,讓冒泡排序一旦排好序就停止循環,提高程序的效率?
#includestdio.h
void bubble_sort_1(int a[],int n)
{ int i,j,x,flag=1;
j=0;
while (flag) // 存在交換,進入循環
{ flag=0; // 初始化,不存在交換
for(i=n-2;i=j;i–)
if(a[i]a[i+1])
{ x=a[i]; a[i]=a[i+1]; a[i+1]=x;
flag=1; // 發現交換,說明無序
}
j++;
}
}
int main(){
}
C語言編程:改進冒泡排序程序,使其當數據已經有序時,直接結束排序過程。請給出運算結果。
#include stdio.h
#include stdlib.h
void Bubble(int *a,int n) //對n個整數從小到大排序
{int i,j,t,k;
for(i=0;in-1;i++)
{k=1;
for(j=0;jn-1-i;j++)
if(a[j]a[j+1])
{k=0;t=a[j];a[j]=a[j+1];a[j+1]=t;}
if(k)break;
}
}
int main()
{int m,i;
scanf(“%d”,m);
int *p=(int *)calloc(m,sizeof(int));
for(i=0;im;i++)
scanf(“%d”,p+i);
Bubble(p,m);
for(i=0;im;i++)
printf(“%d “,*(p+i));
return 0;
}
優化的冒泡排序c語言
.example-btn{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.example-btn:hover{color:#fff;background-color:#47a447;border-color:#398439}.example-btn:active{background-image:none}div.example{width:98%;color:#000;background-color:#f6f4f0;background-color:#d0e69c;background-color:#dcecb5;background-color:#e5eecc;margin:0 0 5px 0;padding:5px;border:1px solid #d4d4d4;background-image:-webkit-linear-gradient(#fff,#e5eecc 100px);background-image:linear-gradient(#fff,#e5eecc 100px)}div.example_code{line-height:1.4em;width:98%;background-color:#fff;padding:5px;border:1px solid #d4d4d4;font-size:110%;font-family:Menlo,Monaco,Consolas,”Andale Mono”,”lucida console”,”Courier New”,monospace;word-break:break-all;word-wrap:break-word}div.example_result{background-color:#fff;padding:4px;border:1px solid #d4d4d4;width:98%}div.code{width:98%;border:1px solid #d4d4d4;background-color:#f6f4f0;color:#444;padding:5px;margin:0}div.code div{font-size:110%}div.code div,div.code p,div.example_code p{font-family:”courier new”}pre{margin:15px auto;font:12px/20px Menlo,Monaco,Consolas,”Andale Mono”,”lucida console”,”Courier New”,monospace;white-space:pre-wrap;word-break:break-all;word-wrap:break-word;border:1px solid #ddd;border-left-width:4px;padding:10px 15px} 排序算法是《數據結構與算法》中最基本的算法之一。排序算法可以分為內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。以下是冒泡排序算法:
冒泡排序(Bubble Sort)也是一種簡單直觀的排序算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢”浮”到數列的頂端。
作為最簡單的排序算法之一,冒泡排序給我的感覺就像 Abandon 在單詞書里出現的感覺一樣,每次都在第一頁第一位,所以最熟悉。冒泡排序還有一種優化算法,就是立一個 flag,當在一趟序列遍歷中元素沒有發生交換,則證明該序列已經有序。但這種改進對於提升性能來
說並沒有什麼太大作用。 1. 算法步驟
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
針對所有的元素重複以上的步驟,除了最後一個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
2. 動圖演示
3. 什麼時候最快
當輸入的數據已經是正序時(都已經是正序了,我還要你冒泡排序有何用啊)。
4. 什麼時候最慢
當輸入的數據是反序時(寫一個 for 循環反序輸出數據不就行了,幹嘛要用你冒泡排序呢,我是閑的嗎)。 5. JavaScript 代碼實現 實例 function bubbleSort ( arr ) {
var len = arr. length ;
for ( var i = 0 ; i arr [ j+ 1 ] :
arr [ j ] , arr [ j + 1 ] = arr [ j + 1 ] , arr [ j ]
return arr
7. Go 代碼實現 實例 func bubbleSort ( arr [] int ) [] int {
length := len ( arr )
for i := 0 ; i length ; i ++ {
for j := 0 ; j length – 1 – i ; j ++ {
if arr [ j ] arr [ j + 1 ] {
arr [ j ], arr [ j + 1 ] = arr [ j + 1 ], arr [ j ]
}
}
}
return arr
}
8. Java 代碼實現 實例 public class BubbleSort implements IArraySort {
@Override
public int [ ] sort ( int [ ] sourceArray ) throws Exception {
// 對 arr 進行拷貝,不改變參數內容
int [ ] arr = Arrays . copyOf ( sourceArray, sourceArray. length ) ;
for ( int i = 1 ; i
C語言的冒泡算法改進
flag=FALSE; /*把flag初始化為false*/
for(j=L-length-1;j=i;j–)
{
if(L-r[j]L-r[j+1])
{
swap(L,j,j+1); /*交換L-r[j]與L-r[j+1]的值*/
flag=TURE; /*如果有數據交換,則flag變為ture*/
}
}
把flag初始化為false,如果有數據交換,則flag變為ture; 反之就是 沒有數據交換。
就是說數據已經是 排序完畢了, 這樣 length flag – flag = false,就是數據已經是 排序完畢,可以退出循環了。
C語言中冒泡法的改進問題
swap變量的設立是檢查
上一輪j的循環中是否存在前面一個數比後面一個數小而進行調換的情況存在.
假如不存在就是排序已經完成.可以不用再使i加1來檢測了.
比如像一開始已經排好序的隊列它就直接退出而不用每次都檢查了.
你可以試着用單步調試的形式來仔細看看swap變量的作用.
原創文章,作者:SEKI,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/144219.html