冒泡排序法的改进
若给出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------