請教下用冒泡法對數組a進行由小到大的排序,怎樣實現
#include<stdio.h>intmain(){inti,j,t,n,a[100];scanf("%d",&n);//共n個數for(i=0;i<n;i++)scanf("%d",&a[i])
;//讀入for(i=0;i<n-1;i++)//冒泡排序for(j=0;j<n-1-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}for(i=0;i<n;i++)//輸出printf("%d",a[i]);return0;}
c語言如何用冒泡法排序
冒泡排序是排序算法中較為簡單的一種,英文稱為BubbleSort。它遍歷所有的數據,每次對相鄰元素進行兩兩比較,如果順序和預先規定的順序不一致,則進行位置交換;這樣一次遍歷會將最大或最小的數據上浮到頂端,之后再重復同樣的操作,直到所有的數據有序。
如果有n個數據,那么需要的比較次數,所以當數據量很大時,冒泡算法的效率并不高。
當輸入的數據是反序時,花的時間最長,當輸入的數據是正序時,時間最短。
平均時間復雜度:
空間復雜度:O(1)
#include"stdio.h"
voidswap(int*t1,int*t2)
{
inttemp;
temp=*t1;
*t1=*t2;
*t2=temp;
}
voidbubble_sort(intarr[],intlen)
{
inti,j;
for(i=0;i<len-1;i++){
for(j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
swap(&arr[j],&arr[j+1]);
}
}
}
}
intmain()
{
intarr[]={34,27,55,8,97,67,35,43,22,101,78,96,35,99};
inti;
intlen=sizeof(arr)/sizeof(*arr);
bubble_sort(arr,len);
printf("len=%d\n",len);
printf("usebubblesortthearraryis:");
for(i=0;i<len;i++){
printf("%d",arr[i]);
}
printf("\n");
}
————————————————河南新華
冒泡排序原理
冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個項目進行掃描,比較相領兩個項目的大小,若發現違背大小次序則進行互換,由此可以使n個項目中的最大者換到最后。
冒泡排序算法原理
1、從后往前依次比較相鄰的元素。若是要按照升序排序,則后面的元素比前面的小,就交換這2個元素;降序則相反。
2、對每一對相鄰元素作同樣的工作,從第一對到最后一對。進行一輪比較交換下來,最后的元素就會是最小(或最大)的數了,這個數就不用參與后面的比較操作了。
3、針對所有的元素重復以上的步驟。
4、持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
原理:是將前后數組內的兩個元素進行比較(我們這個例子進行升序排序,降序排序原理相同),大的元素位置往后調整,后面元素依次執行。
java中的冒泡排序
publicvoidbubbleSort(int[]data,StringsortType){
if(sortType.equals("asc")){//正排序,從小排到大
//比較的輪數
for(inti=1;i<data.length;i++){
//將相鄰兩個數進行比較,較大的數往后冒泡
for(intj=0;j<
data.length
-i;j++){
if(data[j]>data[j+1]){
//交換相鄰兩個數
swap(data,j,j+1);
}
}
}
}elseif(sortType.equals("desc")){//倒排序,從大排到小
//比較的輪數
for(inti=1;i<data.length;i++){
//將相鄰兩個數進行比較,較大的數往后冒泡
for(intj=0;j<
data.length
-i;j++){
if(data[j]<data[j+1]){
//交換相鄰兩個數
swap(data,j,j+1);
}
}
}
}else{
System.out.println("您輸入的排序類型錯誤!");
}
printArray(data);//輸出冒泡排序后的數組值
}
冒泡排序最多計算公式
#include
voidmain()
{
inta[10];
inti,j,t;
printf("pleaseenter10number:\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");
}
C語言:編寫一個程序,通過冒泡排序算法對數組
參考代碼:
inti,j,tmp;
intb[]={18,24,12,59,101,96,34};
for(i=0;i<6;i++)
for(j=i+1;j<7;j++)
{
if(b[i]>b[j])
{
tmp=b[i];
b[i]=b[j];
b[j]=tmp;
}
}
i=0;
while(i++<7)
printf("%d",b[i-1]);