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

c語言使用冒泡法進行升序

發布時間: 2023-06-01 21:01:04

❶ 用冒泡排序法對輸入的10個數進行升序排序 並存入數組中

c語言程序如下;

#include<stdio.h>

#defineARR_LEN255/*數組長度上限*/

#defineelemTypeint/*元素類型*/

/*冒泡排序*/

/*1.從當前元素起,向後依次搜亮比較每一對相鄰元素,若逆序則交換*/

/*2.對所有元素均重復以上步驟,直至最後一個元素*/

/*elemTypearr[]:排序目標數組;intlen:元素個數*/

voidbubbleSort(elemTypearr[],intlen){

elemTypetemp;

inti,j;

for(i=0;i<len-1;i++)/*外循環為排序趟數,len個數進行len-1趟*/

for(j=0;j<len-1-i;j++){/*內循環為每趟比較的次數,第i趟比較len-i次*/

if(arr[j]>arr[j+1]){/*相鄰元素比較,若逆序則交換(升序為左大於右,降序反之)*/

temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

int或漏高main(void){

elemTypearr[ARR_LEN]={3,5,1,-7,4,9,-6,8,10,4};

intlen=10;

inti;

bubbleSort(arr,len);

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

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

putchar(' ');

return0;

}

冒泡排序的最壞時間復雜度為O(n^2)。

綜上,因此冒泡排序總的平均時間復雜度為O(n^2)。

❷ c語言編程:對10個數冒泡排序(升序)。

#include<stdio.h>

intmain(){

intnumber[10]={95,45,15,78,84,51,24,12,34,23};

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

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

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

int temp=a[i];

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

a[i+1]=temp; }

}

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

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

}

插入排序

已知一組升序排列數據a[1]、a[2]、……a[n],一組無序數據b[1]、b[2]、……b[m],需將二者合並成一個升序數列。

首先比較b[1]與a[1]的值,若b[1]大於a[1],則跳過,比較b[1]與a[2]的值,若b[1]仍然大於a[2],則繼續跳過,直到b[1]小於a數組中某一數據a[x],則將a[x]~a[n]分別向後移動一位,將b[1]插入到原來a[x]的位置這就完成了b[1]的插入。

b[2]~b[m]用相同方法插入。

快速排序

快速排序是大家已知的常用排序演算法中最快的排序方法。已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。首先任取數據a[x]作為基準。

比較a[x]與其它數據並排序,使a[x]排在數據的第k位,並且使a[1]~a[k-1]中的每一個數據<a[x],a[k+1]~a[n]中的每一個數據>a[x],然後採用分治的策略分別對a[1]~a[k-1]和a[k+1]~a[n]兩組數據進行快速排序。

希爾排序

已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。

首先取一增量d(d<n),將a[1]、a[1+d]、a[1+2d]……列為第一組,a[2]、a[2+d]、a[2+2d]……列為第二組……,a[d]、a[2d]、a[3d]……列為最後一組以次類推,在各組內用插入排序,然後取d'<d,重復上述操作,直到d=1。

❸ 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、持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

(3)c語言使用冒泡法進行升序擴展閱讀:

冒泡排序的思想:

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

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

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

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

❹ c語言 用一個函數實現用冒泡法對十個整數升序和降序排列 麻煩寫全些

#include<stdio.h>
voidsort1(inta[],intn)
{inti,j,t;
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;}
}
voidsort2(inta[],intn)
{inti,j,t;
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;}
}
intmain()
{inti,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf(" ");
sort1(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf(" ");
sort2(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf(" ");
return0;
}

❺ c語言怎麼做冒泡排序啊

使用冒泡排序法進行編程:

解釋:

1.第一個for循環:利用數組循環輸入4個變數。

2.第二個for循環:該循環的意思是如果a[0]>a[1]的話,兩個變數的值交換,利用循環依次比較。要注意的是i<3,因為其中有i+1,i最大取到2,也就悶渣是i+1最大取到3才正確。

3.第三個for循環:利用循環依次輸出螞渣悄排序後的數組,每輸出一個加一個空格以便於區分。

(5)c語言使用冒泡法進行升序擴展閱讀:

冒泡排序法,從數組頭部開始,不斷比較相鄰的兩個元素的大小,通過交換兩個元素的值使較大的元素逐漸往後移動,直到數組的末尾。

經過第一輪的比較,就可以找到最大的元素,並將它移動梁燃到最後一個位置。第一輪結束後,繼續第二輪。仍然從數組頭部開始比較,讓較大的元素逐漸往後移動,直到數組的倒數第二個元素為止。

經過第二輪的比較,就可以找到次大的元素,並將它放到倒數第二個位置。

以此類推,進行 n-1(n 為數組長度)輪「冒泡」後,就可以將所有的元素都排列好。

❻ C語言冒泡排序


冒泡排序基本思慧正想
將n個記錄看作按縱向排列,每趟排序時自下至上對每對相鄰記錄進行比較,脊頌若次序不符合要求(逆序)就交換。每趟排序結束時都能使排序范圍內關鍵字最小的記錄象一個氣泡一樣升到表上端的對應位置,整個排序過程共進行n-1趟,依次將關鍵字最小、次小、第三小的各個記錄「冒到」表的第一個、第二個、第三個位置上。
初態 第1趟 第2趟 第3趟櫻碧鄭 第4趟 第5趟 第6趟 第7趟
38
12
12
12
12
12
12
12
20
38
20
20
20
20
20
20
46
20
38
25
25
25
25
25
38
46
25
38
38
38
38
38
74
38
46
38
38
38
38
38
91
74
38
46
46
46
46
46
12
91
74
74
74
74
74
74
25
25
91
91
91
91
91
91
/*
Title: 冒泡排序
Author: Li Aimin
Date: May 2007
演算法功能:冒泡排序演算法實現將一個長度為n的線性表r上的所有元素按關鍵字升序排列。
*/
#includestdio.h
void bubblesort(int r[],int n)
{ /*elements are stored in r[1] to r[n]*/
int i,j,flag;
int temp;
flag=1;
i=1;
while((in)(flag==1)) /*外循環控制排序的總趟數*/
{ flag=0;
for(j=n;ji;j--) /*內循環控制一趟排序的進行*/
if(r[j]r[j-1]) /*相鄰元素進行比較,若逆序就交換*/
{
flag=1;
temp=r[j];
r[j]=r[j-1];
r[j-1]=temp;
}
i++;
}
} /*bubblesort*/
void show(int r[] , int n)
{
/*elements are stored in r[1] to r[n]*/
int i;
for(i=1;i=n;i++)
printf(" %d ",r[i]);
printf(" ");
}
void main()
{
int a[9201],i;
for(i=0;i9201;i++)
a[i]=9201-i;
//show(a,100000);
bubblesort(a,9200);
show(a,9200);
}

❼ 是用C語言實現如下功能:從鍵盤輸入8個整數,使用冒泡排序法把他們升序輸出。

#include 「stdio.h」
main()
{int a[8];
int j,i;
for(i=0;i<8;i++)
{ printf(「請輸入第%d個數:\n」,i+1);
scanf(「%d」,&a[i]);
}
for(j=1;j<9;j++)
for(i=0;i<8–j;i++)
{if(a[i]>a[i+1]) a[i+1]=a[i];

}
for(i=0;i<8;i++)
printf("\n排序後的結果是:%d\n",a[i]);
return 0;
}