c語言數組冒泡排序
㈠ 如何用c語言進行冒泡排序,並把每一次排序的結果輸出
#include<stdio.h>
intmain()
{inta[10],i,j,t,i1;//定義數組;
for(i=0;i<10;i++)
{printf("請輸入第%d次元素:",i+1);
scanf("%d",&a[i]);//給數組賦值;
}
for(i=0;i<9;i++)//10個數,進行9輪比較;
{for(j=0;j<9-i;j++)//第一個數比較9次,依次遞減;
{if(a[j]>a[j+1])//交換值;
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i1=0;i1<10;i1++)
{printf("%d",a[i1]);//輸出數組的值;
}
printf(" ");
}
return0;
}
㈡ C語言冒泡排序法是怎麼排序的
C語言冒泡排序法的排序規則:
將被排序的記錄數組R[1..n]垂直排列,每個記錄R看作是重量為R.key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃描數組R:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。如此反復進行,直到最後任何兩個氣泡都是輕者在上,重者在下為止。
初始 R[1..n]為無序區。
第一趟掃描 從無序區底部向上依次比較相鄰的兩個氣泡的重量,若發現輕者在下、重者在上,則交換二者的位置。
即依次比較(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);對於每對氣泡(R[j+1],R[j]),若R[j+1].key<R[j].key,則交換R[j+1]和R[j]的內容。 第一趟掃描完畢時,"最輕"的氣泡就飄浮到該區間的頂部,即關鍵字最小的記錄被放在最高位置R[1]上。
第二趟掃描 掃描R[2..n]。
掃描完畢時,"次輕"的氣泡飄浮到R[2]的位置上…… 最後,經過n-1 趟掃描可得到有序區R[1..n] 注意: 第i趟掃描時,R[1..i-1]和R[i..n]分別為當前的有序區和無序區。掃描仍是從無序區底部向上直至該區頂部。掃描完畢時,該區中最輕氣泡飄浮到頂部位置R上,結果是R[1..i]變為新的有序區。
㈢ c語言中冒泡排序的實現原理是什麼
冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重復以上過程,直至最終完成排序。
由於在排序過程中總是小數往前放,大數往後放,相當於氣泡往上升,所以稱作冒泡排序。
用二重循環實現,外循環變數設為i,內循環變數設為j。外循環重復9次,內循環依次重復9,8,...,1次。每次進行比較的兩個元素都是與內循環j有關的,它們可以分別用a[j]和a[j+1]標識,i的值依次為1,2,...,9,對於每一個i,
j的值依次為1,2,...10-i
㈣ c語言數組冒泡排序
voidbsort(intarr[],intcount){
inti,j,n;
for(i=0;i<count;i++){
for(j=i+1;j<count;j++){
if(arr[j]<arr[i]){
n=arr[i];
arr[i]=arr[j];
arr[j]=n;
}
}
}
}
㈤ C語言:編寫一個程序用冒泡排序實現升序排列
1、首先打開一個空白的C語言文件,首先先定義一組待排序的數列以及各個變數,接著就是用來處理排序的邏輯:
㈥ C語言數組冒泡法排序,超簡單
#include <stdio.h>int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; int i,j,t; for(i=1;i<10;i++) for(j=0;j<10-i;j++) { if (a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } printf("排序後的結果為:"); for(i=0;i<10;i++) printf("%4d\n",a[i]); printf("\n"); 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
到此第一趟排序結束,接下來的每一趟排序都是這樣。
#include<stdio.h>
voidPrint(int*num,intn)
{
inti;
for(i=0;i<n;i++)
printf("%d",num[i]);
puts(" ");
return;
}
voidBubble_Sort(int*num,intn)
{
inti,j;
for(i=0;i<n;i++)
{
for(j=0;i+j<n-1;j++)
{
if(num[j]>num[j+1])
{
inttemp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
Print(num,n);
}
}
return;
}
intmain()
{
intnum[8]={87,12,56,45,78};
Bubble_Sort(num,5);
return0;
}
㈧ C語言中冒泡排序法(又稱起泡排序法)得具體程序
冒泡法我是這樣理解的,便於掌握和記憶。首先冒泡是n長度的數組開始的兩位開始,逐位雙雙比較一直到最後兩個,所以最外循環比較了n-1次。第一個數比較了以後就不比了,從第二個開始,一直比較到數組末尾,於是內循環的起始位置不同,每次都是外側i的值加0,也就是i。但結束的限制和外層循環是相同的。於是寫法為for
(i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)
㈨ C語言冒泡排序(數組)
按照你的要求編寫的C語言冒泡排序的程序如下
#include<stdio.h>
intmain(){
inti,j,k,T,n,tmp;
scanf("%d",&T);
for(i=0;i<T;i++){
scanf("%d",&n);
inta[n];
for(j=0;j<n;j++){
scanf("%d",&a[j]);
}
for(j=0;j<n-1;j++){
for(k=0;k<n-1-j;k++){
if(a[k]>a[k+1]){
tmp=a[k];
a[k]=a[k+1];
a[k+1]=tmp;
}
}
for(k=0;k<n;k++){
printf("%d",a[k]);
}
printf(" ");
}
}
return0;
}
運行結果
輸入2
輸入51044312
輸出
4101243
4121043
1241043
1241043
輸入10201231224345424523-10
輸出
201221235424523-10434
122205424523-10123434
2122024523-1054123434
21222023-104554123434
221220-10234554123434
2212-1020234554123434
22-101220234554123434
2-1021220234554123434
-10221220234554123434