㈠ 數據結構 冒泡排序 c語言 源代碼 急用啊
void bubble_sort(int *x, int n)
{
int j, k, h, t;
for (h=n-1,h=k; h>0; h--) /*循環到沒有比較范圍*/
{
for (j=0, k=0; j<h; j++) /*每次預置k=0,循環掃描後更新k*/
{
if (*(x+j) > *(x+j+1)) /*大的放在後面,小的放到前面*/
{
t = *(x+j);
*(x+j) = *(x+j+1);
*(x+j+1) = t; /*完成交換*/
k = j; /*保存最後下沉的位置。這樣k後面的都是排序排好了的。*/
}
}
}
}
㈡ C語言中冒泡排序法(又稱起泡排序法)得具體程序
冒泡法我是這樣理解的,便於掌握和記憶。首先冒泡是n長度的數組開始的兩位開始,逐位雙雙比較一直到最後兩個,所以最外循環比較了n-1次。第一個數比較了以後就不比了,從第二個開始,一直比較到數組末尾,於是內循環的起始位置不同,每次都是外側i的值加0,也就是i。但結束的限制和外層循環是相同的。於是寫法為for (i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)
㈢ 冒泡排序演算法的C語言代碼,要求有運行過程即每運行一步就輸出一次結果
void del(int *a,int n)//冒泡
{
int i,j,k;
for(i=0;i<=n-2;i++)
for(j=0;j<=n-2-i;j++)
{ if(a[j]>a[j+1])//如果你要從大到小排序就改>為<
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
for( k=0;k<n;k++)
printf("%d\t",a[k]);
printf("\n");
}
按照樓主要求更改後的函數
㈣ 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語言代碼
程序如下:
#include<malloc.h>
#include<stdio.h>
intmain(void)
{
inti,j,t,num;
int*p;
printf("請輸入要排序的數的個數:num=");
scanf("%d",&num);
p=(int*)malloc(num*sizeof(int));
//輸入要排序的數
for(i=0;i<num;++i)
{
printf("請輸入第%d個要排序的數p[%d]= ",i+1,i);
scanf("%d",&p[i]);
}
//冒泡排序
for(i=0;i<num-1;++i)
{
for(j=0;j<num-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;i<num;++i)
{
printf("%d",p[i]);
}
printf(" ");
return0;
}
程序運行結果:
隨機輸入十個數:
㈥ 數據結構(C++)冒泡排序的代碼
冒泡排序數組s[]的元素,從大到小。
for(int i=1;i!=n;i++) //外層循環
{
for(int j=0;j!=n-i;j++) //內層循環
{
if(s[j]<s[j+1]) //比較相鄰的兩個元素
{
temp=s[j]; //符合條件,交換
s[j]=s[j+1];
s[j+1]=temp;
}
}
}