當前位置:首頁 » 編程語言 » c語言版數據結構冒泡排序法代碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言版數據結構冒泡排序法代碼

發布時間: 2022-04-18 20:08:27

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]);


}

(1)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;

}

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

⑵ C語言:編寫一個程序用冒泡排序實現升序排列

程序如下:

#include <stdio.h>

int main ()

{

int a[10];

int i, j, t;

printf ("請輸入十個數: ");

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

{

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

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

}

for (j = 0;j < 9; j++)

for (i = 0; i < 9 - j; i++)

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

{

t = a[i];

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

a[i+1] = t;

}

printf ("由小到大的順序為: ");

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

{

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

}

printf (" ");

return 0;

}

運行結果

請輸入十個數:

a[1]=7

a[2]=8

a[3]=9

a[4]=6

a[5]=5

a[6]=4

a[7]=1

a[8]=2

a[9]=3

a[10]=99

由小到大的順序為:

1,2,3,4,5,6,7,8,9,99。

冒泡排序演算法的原理如下:

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

2、對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3、針對所有的元素重復以上的步驟,除了最後一個。

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

(2)c語言版數據結構冒泡排序法代碼擴展閱讀:

冒泡排序的思想:

首先,從表頭開始往後掃描數組,在掃描過程中逐對比較相領兩個元素的大小。若相鄰兩個元素中,前面的元素大於後面的元素,則將它們互換,稱之為清去了一個逆序。

在掃描過程中,不斷地將兩相鄰元素中的大者往後移動,最後就將數組中的最大者換到了表的最後,這正是數組中最大元素應有的位置。

然後,在剩下的數組元素中(n-1個元素)重復上面的過程,將次小元素放到倒數第2個位置。不斷重復上述過程,直到剩下的數組元素為0為止,此時的數組就變為了有序。

假設數組元素的個數為西,在最壞情況下需要的比較總次數為:(n-1)+(n-2)...+2+1)-n(n-1)/2。

⑶ C語言冒泡排序法代碼是什麼

所謂冒泡排序法,就是對一組數字進行從大到小或者從小到大排序的一種演算法。

1、具體方法是,相鄰數值兩兩交換。從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);如果其與我們的期望一致,則不用交換。重復這樣的過程,一直到最後沒有數值需要交換,則排序完成。具體情況如下圖所示:

⑷ C語言冒泡排序法代碼

冒泡排序是排序演算法的一種,思路清晰,代碼簡潔,常被用在大學生計算機課程中。「冒泡」這個名字的由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名。這里以從小到大排序為例進行講解。基本思想及舉例說明


冒泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較就,選出最大的數;經過第2輪比較,就選出次大的數,以此類推。下面以對 3 2 4 1 進行冒泡排序說明。

⑸ c語言冒泡排序法代碼

冒泡法排序的原理是相鄰的兩個數進行比較,現在以「輸入10個數,對它們按小到大的順序排序」這道題,來展示冒泡法排序。
#include
int main(){
int a[10];
int i,j,t;
printf (" input 10 numbers: \n");
for (i=0;i<10;i++)
scanf("%d",&a[i] );
printf ("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers: \n");
for(i=0;i<10;i++)
printf( "%d",a[i]);
printf("\n");
return 0;
}

⑹ 求 c語言選擇排序法和 冒泡排序法代碼

冒泡排序法的具體實現方法是這樣的,從數組的第一個元素`arr[0]`開始,兩兩比較**(`arr[n],arr[n+1]`),如果前面的數大於後面的數(`arr[n] > arr[n+1]`),那麼交換兩個元素的位置,把大的數往後移動。這樣依次經過一輪比較以後,最大的數將會被交換到最後的位置(arr[n-1])。

C語言實現Bubblesort:

voidbubblesort(inta[],intm)
{
inti,j;
inttmp;
intflag=0;//設定標志,如果第一次循環比較時沒有發生交換,則說明數組是升序排序,不用排序,提前結束循環。
for(i=0;i<m;i++)//外層循環控制循環次數
{
for(j=0;j<m-1-i;j++)//內層循環控制每次循環里比較的次數。
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
flag=1;
}
}

if(0==flag)
{
printf("NoSort ");
break;
}
}
}

選擇排序法的過程是,通**過比較,選擇出每一輪中最值元素,然後把他和這一輪中最最前面的元素交換**,所以這個演算法關鍵是要記錄每次比較的結果,即每次比較後最值位置(下標)。

C語言實現(Selectionsort)

voidselectionsort(inta[],intm)
{
inti,j;
intk;
inttmp;

for(i=0;i<m-1;i++)//控制循環次數,n個數需要n-1次循環
{
k=i;
for(j=i+1;j<m;j++)
{
if(a[j]<a[k])
k=j;
}
//i不等於k是就證明a[i]不是最小的,
//i等於k時證明a[i]就是本輪比較過程中最小的值
if(i!=k)
{
tmp=a[i];
a[i]=a[k];
a[k]=tmp;
}
}
}

⑺ 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]);


}

(7)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;

}

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

⑻ c語言冒泡排序法

(1)基本思想:在要排序的一組數中,對當前還未排好序的范圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。

(2)實例:

(3)代碼解釋:

#include<stdio.h>
int main()
{
int a[10];
int i,j,t,temp;//temp記錄臨時中間值
printf("請輸入10個數:");
for (i=0;i<10;i++)
{
scanf("%d",&a[i]);//記錄輸入的十個數
}
for (j=1;j<=9;j++)
{
t=10-j;
for (i=0;i<t;i++)
{
if (a[i]>a[i+1]) {

//交換兩數的位置

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

}
for (i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
return 0;
}


望採納!

⑼ 求指導C語言的冒泡排序代碼

main()函數修改如下:

intmain()
{
intapk(int*);
inta[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
apk(a);
for(i=0;i<10;i++)
printf("%d",a[i]);
return0;
}

apk()函數修改如下:

intapk(inta[])
{
for(k=0;k<9;k++)
for(i=0;i<10-k;i++)
if(a[i]>a[i+1])
{
j=a[i];
a[i]=a[i+1];
a[i+1]=j;
}
}