本文目錄一覽:
- 1、輸入10個數,用冒泡排序法按由小到大順序排序並輸出??c語言的
- 2、求 c語言選擇排序法和 冒泡排序法代碼?
- 3、冒泡排序的C語言代碼
- 4、C語言冒泡排序法代碼
- 5、C語言冒泡排序法代碼是什麼?
- 6、C語言中選擇排序法和冒泡排序法代碼。
輸入10個數,用冒泡排序法按由小到大順序排序並輸出??c語言的
如下參考:
#包括 stdio, h
Intmain()
{
Inta[10]={0};
IntI=0,j=0,t=0;
For (I = 0;我 10;我+ +)
{scanf (” % d “, a [I]);}
For (I = 0;我 10;我+ +)
{for (j = 0;J 10 – I;J + +) {
If (a [j] a [j + 1))
{
T=a,[j]。
A[j]=A,A+1加到[j]。
A[m+1]=t;
}}}
For (I = 0;我 10;我+ +)
{printf("%d",a[I]);}
返回0;}
任意輸入10個數據,程序運行:
擴展資料:
冒泡排序算法的複雜原理如下:
1.比較相鄰metaelements。如果第一個比第二個大,就交換它們。
2.對每一對相鄰的元素執行相同的操作,從第一對開始,到最後一對結束。此時,最後一個元素應該是最大的數。
3.對除最後一個元素之外的所有元素重複上述步驟。
4.每次對越來越少的元素重複上述步驟,直到沒有一對數字可供比較。
求 c語言選擇排序法和 冒泡排序法代碼?
冒泡排序法的具體實現方法是這樣的,從數組的第一個元素`arr[0]`開始,兩兩比較**(`arr[n],arr[n+1]`),如果前面的數大於後面的數(`arr[n] arr[n+1]`),那麼交換兩個元素的位置,把大的數往後移動。這樣依次經過一輪比較以後,最大的數將會被交換到最後的位置(arr[n-1])。
C語言實現Bubblesort:
void bubblesort(int a[], int m)
{
int i,j;
int tmp;
int flag = 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(“No Sort\n”);
break;
}
}
}
選擇排序法的過程是,通**過比較,選擇出每一輪中最值元素,然後把他和這一輪中最最前面的元素交換**,所以這個算法關鍵是要記錄每次比較的結果,即每次比較後最值位置(下標)。
C語言實現(Selectionsort)
void selectionsort(int a[],int m)
{
int i,j;
int k;
int tmp;
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 malloc.h
# include stdio.h
int main(void)
{
int i, j, t,num;
int * p;
printf(“請輸入要排序的數的個數:num=”);
scanf(“%d”, num);
p= (int *)malloc(num* sizeof(int));
//輸入要排序的數
for (i=0; inum; ++i)
{
printf(“請輸入第%d個要排序的數p[%d]=\n”, i+1,i);
scanf(“%d”, p[i]);
}
//冒泡排序
for (i=0; inum-1; ++i)
{
for (j=0; jnum-1-i; ++j)
{
if (p[j] p[j+1]) // 表示升序 表示降序
{
t = p[j];
p[j] = p[j+1];
p[j+1] = t;
}
}
}
//輸出已經排序好的數
printf(“輸出已經排序好的數”);
for (i=0; inum; ++i)
{
printf(“%d “, p[i]);
}
printf(“\n”);
return 0;
}
程序運行結果:
隨機輸入十個數:
C語言冒泡排序法代碼
冒泡排序每一趟排序把最大的放在最右邊。
比如:
87 12 56 45 78
87和12交換:12 87 56 45 78
87和56交換: 56 87 45 78
87和45交換: 45 87 78
87和78交換: 78 87
到此第一趟排序結束,接下來的每一趟排序都是這樣。
#includestdio.h
void Print(int *num, int n)
{
int i;
for(i = 0; i n; i++)
printf(“%d “, num[i]);
puts(“\n”);
return;
}
void Bubble_Sort(int *num, int n)
{
int i, j;
for(i = 0; i n; i++)
{
for(j = 0; i + j n – 1; j++)
{
if(num[j] num[j + 1])
{
int temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
Print(num, n);
}
}
return;
}
int main()
{
int num[8] = {87, 12, 56, 45, 78};
Bubble_Sort(num, 5);
return 0;
}
C語言冒泡排序法代碼是什麼?
所謂冒泡排序法,就是對一組數字進行從大到小或者從小到大排序的一種算法。
1、具體方法是,相鄰數值兩兩交換。從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);如果其與我們的期望一致,則不用交換。重複這樣的過程,一直到最後沒有數值需要交換,則排序完成。具體情況如下圖所示:
2、為了實現效果,我們得先定義一組待排序的數列以及各個變量。具體情況如下圖:
3、算法的實現,具體情況如圖:
4、運行結果顯示。具體情況如圖:
5、按照上面的程序,在第五趟(i=5)起泡時,計算機不僅要對「1,5,6,4」兩兩進行比較並排序,還要對「7,8,9,13」進行兩兩比較並排序,而「7,8,9,13」在第四趟起泡時就已經排序好了,所以再進行比較的話,就顯得非常多餘。圖示如下:
6、在上面程序的基礎上進行優化。具體情況如圖所示:
7、優化後的輸出結果。如圖所示:
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;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/236236.html