網站首頁 學習教育 IT科技 金融知識 旅遊規劃 生活小知識 家鄉美食 養生小知識 健身運動 美容百科 遊戲知識 綜合知識
當前位置:趣知科普吧 > IT科技 > 

c語言冒泡排序法是什麼

欄目: IT科技 / 發佈於: / 人氣:1.15W

#include void main() { int a[10]; int i,j,t; printf("input 10 numbers:n"); for(i=0;i

相信學過C語言的朋友都知道,在C語言中,常用的排序算法有:冒泡排序、快速排序、插入排序、選擇排序、希爾排序、堆排序以及歸併排序等等。就算沒有用過,相信大家也有所耳聞。在這裏呢,小編主要是想和大家一起來探討探討C語言的冒泡排序法,大家有什麼好的建議可以在評論裏給我留言,希望我們相互學習,共同進步。

材料/工具

Visual C++6.0軟件

所謂冒泡排序法,就是對一組數字進行從大到小或者從小到大排序的一種算法。 1、具體方法是,相鄰數值兩兩交換。從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);如果其與我們的期望一致,則不

冒泡排序法基本原理

#include int main() { int a[10]; int i,j,t,temp; printf("請輸入10個數:"); for (i=0;i

所謂冒泡排序法,就是對一組數字進行從大到小或者從小到大排序的一種算法。具體方法是,相鄰數值兩兩交換。從第一個數值開始,如果相鄰兩個數的排列順序與期望不同,則將兩個數的位置進行交換(對調);如果其與期望一致,則不用交換。重複這樣的過程,一直到最後沒有數值需要交換,則排序完成。一般地,如果有N個數需要排序,則需要進行(N-1)趟起泡,我們以從小到大排序爲例來看一下,具體情況如下圖所示:

#include void main() { int a[10]; int i,j,t; printf("input 10 numbers:n"); for(i=0;i

c語言冒泡排序法是什麼

C語言程序的實現

冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將

首先,爲了實現效果,先定義一組待排序的數列以及各個變量。具體情況如下圖:

選擇排序: void select_sort(int a[],int n) //傳入數組的要排序的元素個數 {int i,j,min,t; for(i=0;i

c語言冒泡排序法是什麼 第2張

算法的實現,具體情況如圖:

先上選擇法和冒泡法: 1.選擇法 #include void main() { int i,j,min,temp; int a[10]; printf("請輸入十個整數:"); for(i=0;i

c語言冒泡排序法是什麼 第3張

執行結果顯示。具體情況如圖

這個應該到網上去搜尋啊,不該在這問。冒泡排序的原理就是:(升序)依次比較相鄰的2個數,把較大的值放在後面,使最後一個數變成數組中的最大值。循環這個過程,直到所有的數據都按這個規則排列好。此時,排序完畢。舉例:3,2,5,7,1 (升序) 1. 3

c語言冒泡排序法是什麼 第4張

擴展閱讀,以下內容您可能還感興趣。

C語言,冒泡排序法從大到小

#抄include<stdio.h>

#include<stdlib.h>

#include<time.h>

void main()

{

int flag,temp,i,j,a[20];

srand((unsigned)time(NULL));

printf("before sorting...\n");

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

a[i]=rand()%1000;

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

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

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

{

flag=0;

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

{

if(a[j]<a[j+1]) //數組襲越界了百,幫度你改了知一下道

{

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

flag=1;}

}

if(flag==0)

break;

}

printf("after sorting...\n");

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

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

}追問這樣改之後排序後的第一個數就是亂碼追答

我執行,怎麼沒出現亂碼勒

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

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

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

2、爲了實現效果,我們得先定義一組待排序的數列以及各個變量。具體情況如下圖:

3、算法知的實現,具體情況如圖:

4、執行結果顯示。具體情況如圖:

5、按照上面的程序,在第五趟(i=5)起泡時,計算機不僅要對“1,5,6,4”兩兩進行比較並排序,還要對“7,8,9,13”進行兩兩比較並排序,而“7,8,9,13”在第四趟起泡時就已經排序好了,所以道再進行比較的話,就顯得非常多餘。圖示如下:

6、在上面程序的基礎上進行優化。具體情況如圖所示:

7、優化後的輸出結果。如圖所示:

關於C語言冒泡排序法的問題

改好了:

#include &7a686964616fe4b893e5b19e31333238653264quot;stdio.h"

#include "stdlib.h"

void PrintArray(int a[],int n) //輸出排序每一步的結果

{

int i;

for(i=0;i<n;i++) //透過循環輸出元素

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

printf("\n");

}

void BubbleSort(int a[],int n) //冒泡排序函數

{

int i,j,tmp; //tmp爲中間變量

int flag; //標誌變量,如果爲0,說明不再交換順序,排序結束

int count=0; //記錄交換次數

printf("initial sorting:");

PrintArray(a,n); //輸出排序前的序列

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

{

flag=0; //初始值爲0

for(j=i+1;j<n;j++)

{if(a[i]>a[j]) //如果前面的數比後面的數大,進行交換

{

tmp=a[i];

a[i]=a[j];

a[j]=tmp;

flag=1; //如果發生交換,標識變量設爲1

}

}

count++; //記錄已經發生的排序次數

printf("after %d sorting:",count);

PrintArray(a,n); //輸出第count次的排序結果

if(flag==0) //沒進行一次排序,flag都清0,若交換再發生,則排序完成

{

return;

}

}

}

void main() //主函數

{

int *a,n=5,i=0;

a=(int *)malloc(n*sizeof(int)); //爲5個待排序的整型數開闢儲存空間

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

scanf("%d",&a[i]); //輸入待排序數

BubbleSort(a,n); //調用排序函數進行排序

free(a); //排序結束,釋放儲存空間

}

C語言中冒泡排序法(又稱起泡排序法)得具體程序

冒泡法我是這樣理解的,便抄於掌握和記憶。首先冒泡是n長度的數組開始的兩位開始,逐位雙雙比較一直到最後兩個,所以最外循環比較了n-1次。第一個數比較了以後襲就不比知了,從第二個開始,一直比較到數組末尾,於是內循環的起始位置不同,每次都是外側i的值加0,也就是i。但結束的*和外道層循環是相同的。於是寫法爲for (i=0;i<n-1;i++)

{

for(j=i;j<n-1;j++)更多追問追答追答比較a[j]和a[j+1]}}根據大小需要,決定是否替換兩個位置的值。

c語言冒泡排序法問題(新手)

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define k 20 //錯誤在這裏,你開始2,太小了,設e79fa5e9819331333332623264置大一點,就可以了

void InputName(char StudName[][8]){

int i;

for(i=0;i<8;i++){

gets(StudName[i]);

}

}

void OutputName(char StudName[][8]){

int i;

for(i=0;i<8;i++){

puts(StudName[i]);

}

}

void BubbleSort(char StudName[][8]){

char n[8];

int i,j;

for(i=0;i<8;i++){

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

if((strcmp(StudName[j],StudName[j+1])>0)){

strcpy(n,StudName[j]);

strcpy(StudName[j],StudName[j+1]);

strcpy(StudName[j+1],n);

}

}

}

}

void main(){

char StudName[k][8];

InputName(StudName);

BubbleSort(StudName);

OutputName(StudName);

}