c語言數組排序冒泡排序
Ⅰ c語言:冒泡排序法將數組中10個元素從小到大排序,並找出最小值
#include<stdio.h>
int main()
{
int a[11],min=0,t;
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
min=a[0];
for(int i=0;i<10;i++)
if(a[i]<min)//求最小值
min=a[i];
for(int i=0;i<10;i++)//冒泡排序
for(int j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(int i=0;i<10;i++)
printf("%d ",a[i]);
printf(" %d",min);
return 0;
}
Ⅱ C語言中冒泡排序法和選擇排序法有哪些不同
1、冒泡排序法:一趟一趟的將兩個相鄰的數進行交換如果有10個數則需要排9躺,如果是從
大到小輸出則需要每次將後一個數和前一個數進行比較將較大的數賦值給錢一個數,將較小的數賦值給後一個數,其實就是兩個數交換,那麼第一趟交換完畢後,最
小的數便出現在了數組的最後面,然後進行第二趟的比較時則要對餘下的前9個數進行比較,9趟比較完成後則數組也已經排好序。
2、選擇排序法:10個數則是需要排9次,若按降序排列,第一次比較:則是將數組的第一個元素與數組中從第二個元素開始到最後的元素進行比較找到最大的數記錄下來然後將值賦值給數組的第一個元素,然後進行第二次比較:則是將數組的第二個元素與數組中從第三個元素開始到最後的元素進行比較,找最大的數記錄下來將值賦值給數組的第二個元素。。。依次循環找完
Ⅲ C語言冒泡法排序
我告訴你一種冒泡排序的改進版吧—快速排序,不過得要在Visual C++中運行://--------------------快速排序函數----------------------------------------------
int partition(SqList &L,int low,int high){
//劃分
int pivotkey;
L.r[0]=L.r[low];
pivotkey=L.r[low].key;
while(low<high){
while(low<high &&L.r[high].key>=pivotkey)--high;
L.r[low]=L.r[high];
while(low<high &&L.r[low].key<=pivotkey)++low;
L.r[high]=L.r[low];
}
L.r[low]=L.r[0];
return low;
}
void qsort(SqList &L,int low,int high){
int pivotloc;
if(low<high){
pivotloc=partition(L,low,high);
qsort(L,low,pivotloc-1);
qsort(L,pivotloc+1,high);
}
}
void quicksort(SqList &L){
qsort(L,1,L.length);
}
Ⅳ C語言:編寫函數用冒泡排序法對數組中的數據進行從小到大的排序.
inti,j,temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
之間寫這個
Ⅳ 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
Ⅵ c語言 使用冒泡排序將一維數組A中的N個元素升序排列
方法和詳細的操作步驟如下:
1、第一步,打開C文件,定義一組序列和要排序的各種變數,然後處理排序邏輯,具體的代碼見下圖,轉到下面的步驟。
Ⅶ 求教c語言二維數組的冒泡排序法
1、打開Visual Studio工具並創建一個新的Win32程序。
Ⅷ 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語言的冒泡排序是什麼求解釋
你好,很高興為你解答
所謂冒泡排序即:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重復以上過程,直至最終完成排序。
代碼為:
void sort(float a[],int n)
{
for(int i=1;i<n;i++)//第1到n-1趟
for(int j=0;j<n-1;j++)//相鄰兩個數排序
if(a[j]>a[j+1])
swap(a[j],a[j+1]);//swap為交換兩個數的值的函數(這里省略沒有給出)
}
不懂追問我,滿意請採納,謝謝
祝愉快
Ⅹ C語言:編寫一個程序用冒泡排序實現升序排列
1、首先打開一個空白的C語言文件,首先先定義一組待排序的數列以及各個變數,接著就是用來處理排序的邏輯: