當前位置:首頁 » 編程語言 » c語言冒泡法排序

c語言冒泡法排序

發布時間: 2022-02-15 07:20:55

c語言 冒泡法排序

for(i=1;i<n;i++)
{
for(j=n-2;j>=i-1;j--)//確實這里有問題,你是按從小到大排列,這個for里每次循環j的第一個值都應該是倒數第二個元素,j的最後那個值應該是i-1,因為最後那個元素的下標是不斷增大的,它前面的,也就是比他小的,都是已經排好順序的。
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}

Ⅱ C語言數組冒泡法排序,超簡單

#include <stdio.h>int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; int i,j,t; for(i=1;i<10;i++) for(j=0;j<10-i;j++) { if (a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } printf("排序後的結果為:"); for(i=0;i<10;i++) printf("%4d\n",a[i]); printf("\n"); return 0;}

Ⅲ 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>
void main()
{int a[10];
int i,j,x;
printf("輸入10個數:\n");
for(i=0;i<10;i++)
scanf("&d",&a[i]);
for(i=0;i<10;i++)//應該是10
{for(j=0;j<10-i;j++)//應該是10{if(a[j]>a[j+1])
{x=a[j];
a[j]=a[j+1];
a[j+1]=x;}
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}

Ⅳ c語言冒泡法排序

這是降序排列時的判斷語句,如果相鄰的兩個元素(a[j],a[j+1])的大小關系是a[j]<a[j+1],那麼就交換這兩個元素的元素。

Ⅵ C語言冒泡排序

vc 6.0運行通過-原創

#include "stdio.h"
#include "string.h"
#include "conio.h"
#define N 5
void main()
{
char *p[N]={"Java","Vi","C","D","Ada"};
char *ptemp;
int i,j;
printf("before arrangement:\n");
for(i=0;i<5;i++)
printf("p+%d->%s\n",i,p[i]);
printf("\n");
for(j=0;j<=N-2;j++)
{
for(i=0;i<=N-j-1;i++)
{
if(strcmp(p[i],p[i+1])>0) // *p[i] 表示第i個字元串的第一個字母
{ptemp=p[i];p[i]=p[i+1];p[i+1]=ptemp;}
}
}
printf("after arrangement:\n"); //加 );
for(i=0;i<N;i++)
printf("p+%d->%s",i,p[i]);
getch(); // 要麼改為 getchar(); 要麼加頭文件 "conio.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]);


}

(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語言冒泡排序法詳解

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

Ⅸ C語言冒泡法排序

我告訴你一種冒泡排序的改進版吧—快速排序,不過得要在Visual C++中運行://--------------------快速排序函數----------------------------------------------
int partition(SqList &L,int low,int high){
//劃分
int pivotkey;
L.r[0]=L.r[low];
pivotkey=L.r[low].key;
while(low<high){
while(low<high &&L.r[high].key>=pivotkey)--high;
L.r[low]=L.r[high];
while(low<high &&L.r[low].key<=pivotkey)++low;
L.r[high]=L.r[low];
}
L.r[low]=L.r[0];
return low;
}
void qsort(SqList &L,int low,int high){
int pivotloc;
if(low<high){
pivotloc=partition(L,low,high);
qsort(L,low,pivotloc-1);
qsort(L,pivotloc+1,high);
}
}
void quicksort(SqList &L){
qsort(L,1,L.length);
}

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


}

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

}

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

熱點內容
sql數據溢出 發布:2025-05-17 04:55:14 瀏覽:731
java金額 發布:2025-05-17 04:51:48 瀏覽:288
安卓怎麼下應用 發布:2025-05-17 04:46:52 瀏覽:554
演算法健壯性 發布:2025-05-17 04:41:10 瀏覽:856
jquery文件上傳進度條 發布:2025-05-17 04:39:50 瀏覽:221
信息技術腳本模板 發布:2025-05-17 04:39:00 瀏覽:258
寫sql跑 發布:2025-05-17 04:38:58 瀏覽:252
openharmony編譯依賴 發布:2025-05-17 04:32:45 瀏覽:610
什麼叫雙十一配置 發布:2025-05-17 04:14:31 瀏覽:979
翼狀胬肉使用氟尿嘧啶怎麼配置 發布:2025-05-17 04:14:24 瀏覽:976