(请教)关于冒泡排序程序改进的问题.
#include <stdlib.h>
#include <stdio.h>
#define maxsize 20
struct node
{int key;
}sqlist[maxsize];
void doublebubble(struct node r[],int n)
{ int i=0,j=n-1,l,b=1;
struct node t;
while (b)
{ b=0;
for (l=j;l>i;l--)
if (r[l].key<r[l-1].key) /*找出最小值元素*/
{ b=1; t=r[l];
r[l]=r[l-1];
r[l-1]=t;
}
i++;
for (l=i;l<j;l++)
if (r[l].key>r[l+1].key) /*找出最大值元素*/
{ b=1; t=r[l+1];
r[l+1]=r[l];
r[l]=t;
}
j--;
}
}
main( ) /*主函数*/
{int i,n,temp;
struct node r[20];
printf("input the numbers of the table:\n");
scanf("%d",&n); /*输入待排序的元素个数*/
for (i=0 ;i<n; i++)
{scanf("%d", &temp); /*输入待排序的元素的关键码(其它数据项略)*/
r[i].key=temp;
}
doublebubble(r,n);
for (i=0 ;i<n; i++)
printf("%5d",r[i].key);
printf("\n");
}
试对上述算法进行改进,以使每一趟的冒泡过程都输出相应的结果(从小到大)。
问题点数:0、回复次数:10Top
1 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:17:03 得分 0
这个程序也太烦人了吧。。好多没有用的变量。。格式也不怎么好。。。Top
2 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:20:06 得分 0
所以说需要改进嘛!
需要您这样的高手帮忙解决啊!Top
3 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:22:37 得分 0
这是你写的??Top
4 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:27:23 得分 0
#include <stdlib.h>
#include <stdio.h>
#define maxsize 20
struct node
{int key;
}sqlist[maxsize];
void doublebubble(struct node r[],int n)
{
int i=0,j=n-1,l,b=1;
struct node t;
while (b)
{
b=0;
for (l=j;l>i;l--)
if (r[l].key<r[l-1].key) /*找出最小值元素*/
{
b=1;
t=r[l];
r[l]=r[l-1];
r[l-1]=t;
}
i++;
for (l=i;l<j;l++)
if (r[l].key>r[l+1].key) /*找出最大值元素*/
{
b=1;
t=r[l+1];
r[l+1]=r[l];
r[l]=t;
}
j--;
for(int k=0;k<n;k++)//估计你的意思是这样吧。。。建议还是把程序重新写过把。。好多问题。。虽然可以通过。。。
{
printf("%5d",r[k].key);
}
printf("\n");
}
}
main( ) /*主函数*/
{
int i,n,temp;
struct node r[20];
printf("input the numbers of the table:\n");
scanf("%d",&n); /*输入待排序的元素个数*/
for (i=0 ;i<n; i++)
{
scanf("%d", &temp); /*输入待排序的元素的关键码(其它数据项略)*/
r[i].key=temp;
}
doublebubble(r,n);
for (i=0 ;i<n; i++)
printf("%5d",r[i].key);
printf("\n");
}Top
5 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:32:13 得分 0
谢谢大哥!
小弟新手,手生的很!Top
6 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:35:34 得分 0
能否改进冒泡排序,编制一个程序,对一个待排序的数据集合进行奇偶转换排序呢?Top
7 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:36:34 得分 0
奇偶转换排序??什么意思?Top
8 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:38:01 得分 0
奇偶排序是指第一趟对所有奇数的i,将a[i]和a[i+1]进行比较,第二趟是对所有偶数的i,将a[I]和进行比较a[i+1],每次比较时,若a[i]>a[i+1],则将二者交换,重复上述二趟过程的交换进行,直到整个数组有序。Top
9 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:41:43 得分 0
呵呵。。算法你都知道了。。还不会写吗??。。。就是用两次循环咯。。。呵呵。。自己考虑。。很晚了。。早点睡觉把。。。Top
10 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:44:21 得分 0
呵呵
我的目的就是要把书上的算法实现啊!Top




