c语言冒泡排序的改进,冒泡排序法的改进解决思路

冒泡排序法的改进

若给出10个数字,分别为34 66 90 45 100 150 65 92 27 74,用冒泡排序法后可得到正确排序,但其中有些不需要比较,可以直接跳过,该如何处理,希望大神指教!谢谢!

# include

int main()

{

int a[10];

int i,j,t;

printf("input 10 number:\n");

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

scanf("%d",&a[i]);

printf("\n");

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

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

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

{t=a[i];a[i];=a[i+1];a[i+1]=t;}

printf(“the sorted number:\n”);

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

printf(“%d”,a[i]);

printf(“\n”);

return 0;

}

}

c语言

分享到:

------解决方案--------------------

#include 

int main(void)

{

int arr[9];

int temp, i, j;

int swapped = 1;

// 初始化

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

arr[i] = 9 - i;

// 排序前

printf("Before Sort: ");

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

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

// 冒泡排序

for (i = 0; swapped; i++) {

swapped = 0;

for (j = 0; j 

if (arr[j] > arr[j + 1]) {

temp = arr[j];

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

arr[j + 1] = temp;

swapped = 1;

}

}

}

// 排序后

printf("\n After Sort: ");

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

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

printf("\n");

return 0;

}

Before Sort: 9 8 7 6 5 4 3 2 1 0

After Sort: 0 1 2 3 4 5 6 7 8 9

------解决方案--------------------

#include 

#include 

#include 

void better_bubble_sort(int *D, int n) {

int b,i,m,t;

b=n-1;

while (b) {

m=0;

for (i=0;i

if (D[i]>D[i+1]) {t=D[i];D[i]=D[i+1];D[i+1]=t;m=i;}

}

b=m;

}

}

int main() {

int d[10],n,i;

srand(time(NULL));

for (n=0;n<10;n++) {

printf("------%d------\n",n);

for (i=0;i

printf("\n");

better_bubble_sort(d,n);

printf("sorted:\n",n);

for (i=0;i

printf("\n");

}

}

//------0------

//

//sorted:

//

//------1------

// 87

//sorted:

// 87

//------2------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值