當前位置:首頁 » 編程語言 » c語言中的冒泡法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中的冒泡法

發布時間: 2022-01-13 23:04:14

A. c語言中冒泡法解題

冒泡發其實顧名思義,就想氣泡一樣,將一個數組中最大的先推向最後一個元素位置,接著,將第二個大的數字有推向倒數第二個位置
main()
{
int i,j,n,temp;
int a[10];
scanf9"%d',&n);
printf("The original numbers:\n");
for( i=0,i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++) \*相鄰兩個進行比較,一共比較n-1次*\
for(j=0;j<n-i;j++) \*設置j,每次將最大的推向後的時候,j就會控制循環變數少循環一次,因為最大的已經推向後了,接下來將剩下元素中最大的向後推了*\
if( a[j-1]>a[i])
{ temp=a[j-1];a[j-1]=a[j];a[j]=temp;}\*temp只是用來將兩個變數交換用的臨時變數,例如,( a=5,b=6,要將a,b中的值交換,必須定義一個臨時變數 temp,先將a中的值5放在temp中,在將b中的6給a,然後將temp中的5給b即可)*\
printf("\nThe sorted number:\n");
for(i=0;i<n;i++) printf("%d",a[i]);
}
我已經盡量採用最通俗的語言向你解釋了,這也是我開始學習 c的時候用的方法,希望你能夠明白。

B. c語言冒泡排序法詳解

任意兩個數作比較,大的放後面,小的放前面,然後大的在和下一個數比較,還是大的放後小的往前,以此類推,直到所有數比完了,然後輸出

C. C語言簡單冒泡法程序

#include<stdio.h>

voidsort(int*a,intlen)

{inti=0;

intj;

intt;

for(i=0;i<len;i++)

{

for(j=0;j<len-i-1;j++)

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

}

intmain(intargc,char*argv[])

{

inta[10]={

-999,2,3,77,12,88,0,-8,99,100

};

inti=0;

sort(a,10);

for(i=0;i<10;i++)

{

printf("%d",a[i]);

}

return0;

}

(3)c語言中的冒泡法擴展閱讀

冒泡排序法

#include"stdio.h"

voidmain()

{

inta[10];

inti,j,temp;

//輸入10個整型數據

printf("Pleaseinputtennumbers: ");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

//排序

for(i=0;i<9;i++)//10個數,10-1輪冒泡,每一輪都將當前最大的數推到最後

{

for(j=0;j<9-i;j++)//9-i,意思是每當經過一輪冒泡後,就減少一次比較

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

//列印排序結果

for(i=0;i<10;i++)

printf("%d ",a[i]);

return0;

}

D. C語言的冒泡法

修改好了!!如下:

#include<stdio.h>

void bubble(int a[100], int n)
{
int i=0;
int j=0;
int temp=0;
char select; //選擇

printf("Please Select size b/l: \n"); //選擇從大到小或者從小到大
scanf("%s",&select); //運行中就是這里有錯誤,select沒有給我一個輸入就自己跳過去了,很奇怪
//修改好了,%c改為%s

switch (select)
{
case 'l': //從小到大
for (j=1; j<n; ++j)
{

for (i=0; i<n-j; ++i)
{

if (a[i] > a[i+1])
{

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}

}break;

case 'b': //從大到小
for (j=1; j<n; ++j)
{

for (i=0; i<n-j; ++i)
{

if (a[i] < a[i+1])
{

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}

}break;

default: printf("error\n");
}

for (i=0; i<n; ++i) //輸出排列好的數組
{

printf(" %d ", a[i]);
}

printf("\n");

}

void main()
{ int n=0;
int i=0;
int a[100]={0};

printf(" Please enter the number of array :\n");
scanf("%d", &n); //輸入數組元素的個數

printf(" Please enter the array :\n");

for (i=0; i<n; ++i) //輸入數組裡面的各元素
{
scanf("%d", &a[i]);
}

bubble(a, n);

}

E. C語言冒泡法

外循環用i,內循環不能再使用i,否則就亂了套了。

F. c語言的冒泡法

#include <iostream.h>
#define MaxSize 20
typedef int KeyType;
typedef char ElemType[10];
typedef struct
{
KeyType key;
ElemType data;
}LineList;

//交換排序

//冒泡排序
void BubbleSort(LineList R[],int n)
{
int i,j,exchange;
LineList tmp;
for(i = 0;i < n - 1;i++)
{
exchange = 0;
for(j = n - 1;j > i;j--)
if(R[j].key < R[j-1].key)
{
tmp = R[j];
R[j] = R[j-1];
R[j-1] = tmp;
exchange = 1;
}
if(exchange == 0)
return;
}
}

void main()
{
LineList R[MaxSize];
KeyType a[] = {75,87,68,92,88,61,77,96,80,72};
int n = 10,i;
for(i = 0;i < n;i++)
R[i].key = a[i];
cout << "排序前:";
for(i = 0;i < n;i++)
cout << R[i].key << " ";
cout << endl;
BubbleSort(R,n);
cout << "排序後:";
for(i = 0;i < n;i++)
cout << R[i].key << " ";
cout << endl;
}

G. 請教C語言中冒泡法的問題

#include<stdio.h>
void main()
{
int data[11], i, j, post, t;
printf("Please input 10 integer datas:\n");
for(i = 1; i<=10; i++) //輸入10個數字
scanf("%d",&data[i]); //輸入10個數字
for(i = 1; i <= 9; i++) //對10個數進行9次排序
{
post = i; //找出第i個數至第10個數中最小數所在位置post,假設i就是最小的那個數字
for(j = i+1; j <= 10; j++) //如果 j <= 9的話,那麼會有一個數沒有排序
if(data[j] < data[post]) // 意思是data[j]與暫時設定為最小的值data[post]進行比較,如果data[j]比data[post]還小,那麼就進行交換, post = j; //記錄data[j]的位置,以便後面的交換用到
if(post != i) //將第i個數與第post個數互換
{
t = data[i];
data[i] = data[post];
data[post] = t;
//data[i] = data[post]; 不能直接賦值,如果直接賦值就等於沒有交換了 }
}
printf("The sorted numbers:\n");
for(i = 1; i <= 10; i++) //輸出排序後的結果
printf("%d ", data[i]);
}

H. C語言冒泡排序。

#include<stdio.h>

void main()

{

int a[10];

int i,j,t;

printf("input 10 numbers: ");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(j=0;j<9;j++) /*進行9次循環 實現9趟比較*/

for(i=0;i<9-j;i++) /*在每一趟中進行9-j次比較*/

if(a[i]>a[i+1]) /*相鄰兩個數比較,想降序只要改成a[i]<a[i+1]*/

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf("the sorted numbers: ");

for(i=0;i<10;i++)

printf(" %d",a[i]);


}

(8)c語言中的冒泡法擴展閱讀:

冒泡排序演算法的運作

1、比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。

2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大(小)的數。

3、針對所有的元素重復以上的步驟,除了最後已經選出的元素(有序)。

4、持續每次對越來越少的元素(無序元素)重復上面的步驟,直到沒有任何一對數字需要比較,則序列最終有序。

簡單的表示

#include <stdio.h>

void swap(int *i, int *j)

{

int temp = *i;

*i = *j;

*j = temp;

}

int main()

{

int a[10] = {2,1,4,5,6,9,7,8,7,7};

int i,j;

for (i = 0; i < 10; i++)

{

for (j = 9; j > i; j--)//從後往前冒泡

{

if (a[j] < a[j-1])

{

swap(&a[j], &a[j-1]);

}

}

}

for (i = 0; i < 10; i++)

{

printf("%d ", a[i]);

}

return 0;

}

參考資料來源:冒泡排序-網路

I. c語言冒泡排序法

已通過測試,望採納
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,a[100],t;
if(scanf("%d",&n)!=EOF)
{
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]);
}
printf("\n");
return 0;
}