本文目錄一覽:
- 1、C語言編程:改進冒泡排序程序,使其當數據已經有序時,直接結束排序過程。請給出運算結果。
- 2、c語言冒泡法排序問題?
- 3、C語言中選擇排序法和冒泡排序法代碼。
- 4、C語言中選擇法排序和冒泡法排序有什麼區別
C語言編程:改進冒泡排序程序,使其當數據已經有序時,直接結束排序過程。請給出運算結果。
#include stdio.h
#include stdlib.h
void Bubble(int *a,int n) //對n個整數從小到大排序
{int i,j,t,k;
for(i=0;in-1;i++)
{k=1;
for(j=0;jn-1-i;j++)
if(a[j]a[j+1])
{k=0;t=a[j];a[j]=a[j+1];a[j+1]=t;}
if(k)break;
}
}
int main()
{int m,i;
scanf(“%d”,m);
int *p=(int *)calloc(m,sizeof(int));
for(i=0;im;i++)
scanf(“%d”,p+i);
Bubble(p,m);
for(i=0;im;i++)
printf(“%d “,*(p+i));
return 0;
}
c語言冒泡法排序問題?
不能,比如輸入2 5 3 6 8,在第二個for循環當中
【for(j=i+1;jn;j++)
{if(a[i]a[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
flag=1;
} 】
你a[i]用的i,而i=0,那麼總是a[0]=2與5 3 6 8比,
而a[0]是最小的一個,那麼怎麼也進不了if循環中
flag就為0咯,又return,就結束咯
換下
for(i=1;in;i++)
{
flag=0; //初始值為0
for(j=0;jn-i;j++)
{if(a[j]a[j+1]) //如果前面的數比後面的數大,進行交換
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
flag=1; //如果發生交換,標識變量設為1
}
即把小數在前就放前不動,拿後面的比,而不是總拿小數去與其他的比
C語言中選擇排序法和冒泡排序法代碼。
選擇排序:
void select_sort(int a[],int n) //傳入數組的要排序的元素個數
{int i,j,min,t;
for(i=0;in-1;i++)
{ min=i; //min:當前最小值下標
for(j=i+1;jn;j++) //掃描餘下的部分
if(a[min]a[j]) //若有其它元素更小,就記錄其下標
min=j;
if(min!=i) //保若最小值不在排序區首位,就換到首位
{t=a[min]; a[min]=a[i]; a[i]=t;}
}
}
冒泡排序:
void bubble_sort(int a[], int n) //傳入數組的要排序的元素個數
{ int i, j, t;
for (j=0; jn-1; j++) //n個元素比較n-1輪
for (i= 0; in-1-j;i++) //比較相信的兩個數
if(a[i]a[i+1]) //若大小順序不符,就交換
{t=a[i]; a[i]=a[i+1]; a[i+1]=t;
}
C語言中選擇法排序和冒泡法排序有什麼區別
樓主,如果用一組數,按小到大順序排列,如果用冒泡法,原理是這樣的,就是把最小的數放在最後,不斷地把底層的較大的數冒泡升上來,選擇法是用一個變量不斷地選擇小的數,將值付給變量再通過變量付給相應位置的數組元素…
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/232006.html