1. 冒泡法10個整數從小到大如何排序
冒泡法10個整數從小到大排序思路如下:
依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重復第一趟步驟,直至全部排序完成。
第一趟比較完成後,最後一個數一定是數組中最大的一個數,所以第二趟比較的時候最後一個數不參與比較;第二趟比較完成後,倒數第二個數也一定是數組中第二大的數,所以第三趟比較的時候最後兩個數不參與比較;依次類推,每一趟比較次數-1。
冒泡排序演算法的運作如下:
1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
3、針對所有的元素重復以上的步驟,除了最後一個。
4、持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
2. 用c語言編寫冒泡法比較10個數的大小的程序。
舉幾個例子:
1.輸入10個整數存入數組中,然後把它們從小到大排列並放在同一數組中。(思路:先找出最小的,放在第一個位置,為了防止把原先的數覆蓋掉,可以把原先的第一個數和最小數的位置互換)。
main()
{
int array[10];
int i,j,min,stmp;
for(i=0;i<10;i++) scanf("%d",&array[i]);
for(i=0;i<9;i++)
{
min=array[i];
for(j=i+1;j<10;j++)
if(min>array[j]) /*裡面的4行語句很重要*/
{
min=array[j];
stmp=array[i];
array[i]=array[j];
array[j]=stmp;
}
}
for(i=0;i<10;i++) printf("%d ",array[i]);
printf("\n");
}
分析:先讓第一個值作為基準,如果後面有比它小的,那麼就把這兩個數互換一下,同時把基準換成小的值。兩個數互換應該這樣(stmp=a;a=b;b=stmp;),而不是(a=b;b=a;),想想這是為什麼?必須要用一個變數作為橋梁。這種一個一個的把最小的放在前面的排序方法,我們形象的叫做冒泡法。
2.輸入一行字元存入數組,然後把他們反序存入到同一數組中。
#include "stdio.h"
main()
{
char c,stmp,array[80];
int i=0,j;
while((c=getchar())!='\n') /*注意這兒的用法*/
array[i++]=c;
array[i]='\0'; /*為什麼要加'\0'?是否可以不加?*/
for(j=i-1;j>=i/2;j--)
{
stmp=array[j];
array[j]=array[i-1-j];
array[i-1-j]=stmp;
}
for(i=0;array[i]!='\0';i++) printf("%c",array[i]);
printf("\n");
}
3.一個已經排好序的數組,輸入一個數,利用二分法把這個數從原數組中刪除,數組順序保持不變。如原數組為1,3,5,7,9,11,13,15,17,19,待刪除的數為13,則輸出為1,3,5,7,9,11,15,17,19。
二分法:每次都是判斷中間的數是否滿足要求,若滿足則刪除,若不滿足,則把該數當作邊界,然後再找中點。例如這一題,第一次的是10個數的中點,為11,發現11<13,則找11-19的中點15,發現15>13,再找11-15的中點13,正好,則刪除。
main()
{
int array[10]={1,2,3,5,8,15,20,30,100,200};
int first=0,end=9,middle=(first+end)/2,num,i;
scanf("%d",&num);
while(array[middle]!=num) /*注意這裡面的三行代碼*/
{
if(array[middle]>num) end=middle;
else first=middle;
middle=(first+end)/2;
}
for(i=0;i<9;i++)
{
if(i>=middle) array[i]=array[i+1];
printf("%d ",array[i]);
}
printf("\n");
}
程序沒有考慮當輸入的數在原先數組中沒有時怎麼處理。如果要考慮這個問題,程序該怎麼改動呢?
3. 急!!!c語言題目,用冒泡法調用函數對10個數進行從小到大排序(程序越簡單越好,不然看不懂,大神,
void maopao(int a[],int n) //n為數量
{
int i,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;
}
}
兩個循環:i::第一個數字做9次比較,使最後一位為最大,然後第一個數字再做8次比較使倒數第二位為最大,依次類推。j::一共大比較9次,使數組元素大小按升序排列。
4. C語言冒泡法排序:任意輸入十個數排序(從小到大;從大到小)
從小到大
#include<stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("please enter 10 number:\n");
for(j=0;j<10;j++)
scanf("%d",&a[j]);
printf("\n");
for(i=0;i<9;i++)
for(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(j=0;j<10;j++)
printf("%d",a[j]);
printf("\n");
}
5. 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;
}
6. C語言~十個數字從小到大怎麼排列~從大到小呢~
//要求任意輸入10個數,然後按從小到大順序輸出
#include <stdio.h>
int main()
{
int a[10];
int i,j;
int temp;
printf("請輸入10個整數:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排列後順序為:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("
");
return 0;
}
7. 輸入10個數,用冒泡排序法按由小到大順序排序並輸出c語言的
如下參考:
#包括< stdio, h >
Intmain()
{
Inta[10]={0};
IntI=0,j=0,t=0;
For (I = 0;我< 10;我+ +)
{scanf (" % d ", & a [I]);}
For (I = 0;我< 10;我+ +)
{for (j = 0;J < 10 - I;J + +) {
If (a > [j] a [j + 1))
{
T=a,[j]。
A[j]=A,A+1加到[j]。
A[m+1]=t;
}}}
For (I = 0;我< 10;我+ +)
{printf("%d",a[I]);}
返回0;}
任意輸入10個數據,程序運行:
(7)比較十個數的大小c語言冒泡法擴展閱讀:
冒泡排序演算法的復雜原理如下:
1.比較相鄰metaelements。如果第一個比第二個大,就交換它們。
2.對每一對相鄰的元素執行相同的操作,從第一對開始,到最後一對結束。此時,最後一個元素應該是最大的數。
3.對除最後一個元素之外的所有元素重復上述步驟。
4.每次對越來越少的元素重復上述步驟,直到沒有一對數字可供比較。
8. C語言:採用冒泡排序方法,對10個數按由小到大的的順序排序
代碼如下(對10個整數進行升序排序):
#include<stdio.h>
int main()
{
int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88};
//排序
for(i=1;i<10;i++)//外循環控制排序趟數,n個數排n-1趟
{
for(j=0;j<10-1;j++)//內循環每趟比較的次數,第j趟比較n-i次
{
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("%d",a<i>);
}
printf(" ");
return 0;
}
冒泡法:
演算法分析:如果有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。比較的順序從前往後,經過一趟比較後,將最值沉底(換到最後一個元素位置),最大值沉底為升序,最小值沉底為降序。
(8)比較十個數的大小c語言冒泡法擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:
#include<math.h>//一些數學函數的原型,以及相關的類型和宏
如果需要包含針對程序所開發的源文件,則應該使用第二種格式。
採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在當前項目中的函數原型、類型定義和宏
你可以在#include命令中使用宏。如果使用宏,該宏的取代結果必須確保生成正確的#include命令。例1展示了這樣的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
當上述程序代碼進入預處理時,如果_DEBUG_宏已被定義,那麼預處理器會插入myProject_dbg.h的內容;如果還沒定義,則插入myProject.h的內容。
9. c語言 冒泡法10個數排大小
#include "stdio.h"
#include<stdlib.h>
int main()
{
int i,j,x[10],t;
for(i=0;i<10;i++)scanf("%d",&x[i]);
for(j=1;j<10;j++)
{
for(i=0;i<10-j;i++)
if(x[i]>x[i+1])
{
t=x[i];x[i]=x[i+1];x[i+1]=t;
}
}
for(i=0;i<10;i++)printf("%d ",x[i]);
//system("pause");
}