本文目錄一覽:
- 1、c語言中冒泡法是什麼意思?
- 2、C語言冒泡排序法
- 3、C語言冒泡排序法是什麼?
- 4、c語言編程冒泡
- 5、c語言冒泡法
- 6、C語言冒泡法
c語言中冒泡法是什麼意思?
冒泡法是一種排序方法
冒泡法5 4 3 2 1
比如上面這5個數字我們把它按照由小到大的順序排列,
從前往後相臨兩位比較大小,如果前一位比後一位大就把它倆
換位,5比4大就把5和4換位,得到45321
5又比3大 5和3換位 得到43521 依次類推最後得到
43215 這樣就把最大的一個數字移到最後面了
然後不看5 ,剩下4321 再用上面的方法把4移動到最後
得到 32145 在不看45 剩下321 把3移動到
最後,依此類推。
最終得到12345
這就是冒泡法,是計算機編程排序中最簡單快捷的方法。
除此意外我還能寫出許多排序方法,但是效率上都不如冒泡法
至於為什麼叫冒泡法呢,你把這幾個數字豎起來看
1
2
3
4
5
把最大的數字5看成最大的泡泡,浮到最上,然後4又浮上去,依此類推
得到
5
4
3
2
1
所以形象的稱為冒泡法
——————————————————————————————————
以下是C語言中十個數的冒泡法排序的代碼
#includestdio.h
#includeconio.h
int main(void)
{
long arrary[9],
box=0L;
int i1=0,
i2=0;
for(i1=0;i19;i1++)
arrary[i1]=0;
printf(“輸入數組元素:\n”);
for(i1=0;i1=9;i1++)
{
printf(“%3d”,i1+1);
scanf(“%d”,arrary[i1]);
}
for(i1=0;i1=9;i1++)
for(i2=0;i2=9-i1;i2++)
{
if(arrary[i2]arrary[i2+1])
{
box=arrary[i2+1];
arrary[i2+1]=arrary[i2];
arrary[i2]=box;
}
}
printf(“\n排序後為:\n”);
for(i1=0;i1=9;i1++)
printf(“%3d%d\n”,i1+1,arrary[i1]);
getch();
return 0;
}
C語言冒泡排序法
冒泡排序每一趟排序把最大的放在最右邊。
比如:
87 12 56 45 78
87和12交換:12 87 56 45 78
87和56交換: 56 87 45 78
87和45交換: 45 87 78
87和78交換: 78 87
到此第一趟排序結束,接下來的每一趟排序都是這樣。
#includestdio.h
void Print(int *num, int n)
{
int i;
for(i = 0; i n; i++)
printf(“%d “, num[i]);
puts(“\n”);
return;
}
void Bubble_Sort(int *num, int n)
{
int i, j;
for(i = 0; i n; i++)
{
for(j = 0; i + j n – 1; j++)
{
if(num[j] num[j + 1])
{
int temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
Print(num, n);
}
}
return;
}
int main()
{
int num[8] = {87, 12, 56, 45, 78};
Bubble_Sort(num, 5);
return 0;
}
C語言冒泡排序法是什麼?
冒泡排序法,是C語言常用的排序演算法之一,意思是對一組數字進行從大到小或者從小到大排序的一種演算法。
具體方法是:
相鄰數值兩兩交換。從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);如果其與我們的期望一致,則不用交換。重複這樣的過程,一直到最後沒有數值需要交換,則排序完成。
C語言常見的排序演算法:
1、冒泡排序
基本思想:比較相鄰的兩個數,如果前者比後者大,則進行交換。每一輪排序結束,選出一個未排序中最大的數放到數組後面。
2、快速排序
基本思想:選取一個基準元素,通常為數組最後一個元素(或者第一個元素)。從前向後遍曆數組,當遇到小於基準元素的元素時,把它和左邊第一個大於基準元素的元素進行交換。在利用分治策略從已經分好的兩組中分別進行以上步驟,直到排序完成。
3、直接插入排序
基本思想:和交換排序不同的是它不用進行交換操作,而是用一個臨時變數存儲當前值。當前面的元素比後面大時,先把後面的元素存入臨時變數,前面元素的值放到後面元素位置,再到最後把其值插入到合適的數組位置。
4、直接選擇排序
基本思想:依次選出數組最小的數放到數組的前面。首先從數組的第二個元素開始往後遍歷,找出最小的數放到第一個位置。再從剩下數組中找出最小的數放到第二個位置。以此類推,直到數組有序。
以上內容參考 百度百科-排序演算法、百度百科-c語言冒泡排序
c語言編程冒泡
你說的嵌套定義和調用是什麼意思?
2.應該是 swap 吧?假如你用的是局部變數,那函數調換的就是局部變數,這時傳遞進來的參數就沒有被交換了。除了用全局變數,還可以用指針。
3.都是值傳遞,數組傳遞的是第一個元素的指針。
c語言冒泡法
實參是形參的拷貝
實參的值改變不影響形參
#include stdio.h
void exch(int *a,int *b)
{
int temp;
temp =*a;
*a=*b;
*b=temp;
}
void comexch(int *m,int *n)
{
if(*m*n)
exch(m,n);
}
void main()
{
int i,a[10];
printf(“please input 10 numbers:”);
for(i=0;i10;i++)
scanf(“%d”,a[i]);
for(i=0;i10;i++)
printf(“%d\n”,a[i]);
int j,k,temp;
for(j=0;j10;j++)
{
for(k=10;kj;k–)
comexch(a[k-1],a[j]);
}
printf(“\n結果為:\n”);
for(k=0;k10;k++)
printf(“%d\n”,a[k]);
}
C語言冒泡法
#includestdio.h
void main()
{
int a[10];
int i,j,t;
printf(“input 10 numbers:\n”);
for(i=0;i10;i++)
scanf(“%d”,a[i]);
for(j=0;j9;j++) /*進行9次循環 實現9趟比較*/
for(i=0;i9-j;i++) /*在每一趟中進行9-j次比較*/
if(a[i]a[i+1]) /*相鄰兩個數比較,想降序只要改成a[i]a[i+1]*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf(“the sorted numbers:\n”);
for(i=0;i10;i++)
printf(” %d”,a[i]);
}
擴展資料:
冒泡排序演算法的運作
1、比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大(小)的數。
3、針對所有的元素重複以上的步驟,除了最後已經選出的元素(有序)。
4、持續每次對越來越少的元素(無序元素)重複上面的步驟,直到沒有任何一對數字需要比較,則序列最終有序。
簡單的表示
#include stdio.h
void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}
int main()
{
int a[10] = {2,1,4,5,6,9,7,8,7,7};
int i,j;
for (i = 0; i 10; i++)
{
for (j = 9; j i; j–)//從後往前冒泡
{
if (a[j] a[j-1])
{
swap(a[j], a[j-1]);
}
}
}
for (i = 0; i 10; i++)
{
printf(“%d\n”, a[i]);
}
return 0;
}
參考資料來源:冒泡排序-百度百科
原創文章,作者:RKSE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132786.html