猿问

冒泡排序的问题

#include"stdio.h"
#include"stdlib.h"
typedef struct
{
 	int ranking;
  	int  sum;       //学生的总成绩  
}Student;
int main()
{
	int i,j;
	Student stu[7];
	stu[0].sum=25;stu[1].sum=85;stu[2].sum=90;stu[3].sum=60;stu[4].sum=80;stu[5].sum=40;
	stu[0].ranking=1;
	for(i=0;i<6;i++)
	{
		if(i>0)
		{
			stu[i].ranking=stu[i-1].ranking+1;
		}
	}
	for(i=0;i<6;i++)
	{
		for(j=0;j<5-1;j++)
		{
			if(stu[j].sum<stu[j+1].sum)
			{
				stu[6].ranking = stu[j].ranking;
				stu[j].ranking = stu[j+1].ranking;
				stu[j+1].ranking=stu[6].ranking;
 			}
		}
	}
	for(i=0;i<6;i++)
	{
		printf("%d名的分数为%d\n",stu[i].ranking,stu[i].sum);
	}
}

输出结果不对,是不是冒泡排序出错了

慕粉1600176492
浏览 1815回答 2
2回答

慕田峪6141110

HRJCAASSVPPIEDJGJPSVLUQMSOBHJSLLYJHECPERUQJQKDPPYHZCVBYZZJMVBHXKXJEXQNTPAMWOEYHUUAILYILRENKTWOBRORUGDMMVBXTCCZDBDGJWSCGQNWPYEQXAXAGTWVERKDMUNTGXAZGPLHENQXBXJRUAADJZMQJYBVBXILOVKHERRYEHHAWBNXAGDUNKGUOBECCJQKADKORBUAXYEEJGLIHRRMSLXKXJEJUBBHAKOHWZPSGWWWGZZCZSGWXNNDQNJVSVVVJJJWPRKTLRUQOBYQGGPSFWNTTGTERCVLIOOBYPYEUHHXUQQCCGUXBXAXNEAXTTQTJNDKXBONRFCTGQTJROWDJWGKUEOBOVOHBNFVQZGWVOXKZCCAZWGYSIMSEUNUXQREHUUFVJJDQTCMQQKXHNAEQNMJJMCMMZWHPSFPCCWVJSDAJQMCOOKRTCDZFFEBHDTIYYUNNUEKAGHDDWSCFYYRBVJCIPYKGTJZISSSGMZFMFFVLNJGSVIDTPZZZFCOCBFDZWFFOCPIESOCPBHQTKHTGZWCKXJCVOBPOFBANZDEYVUGDQBNWDDPIVHUUSLXRDKGDPNKHCSSYRCYKSREXNTNAKTCVFYRCQGTTTZSOEXNKSYSFLRUPSRFFGGFBOBWCFVSIUBENUUEEHKAGTTCPPLVRYBPSXFLLETJJRLBWHWBEKQGVVVBHELRTWGSCYUKQNGHGMCYVSCJWIBIYBSVKEQTEUXWZUDTZJEAQXAJZIBNJUQARKVJFVLIIRLIYYHRUAQJSPVOVRETKMMWNJQAIVBHXUKAGJZNQDTWRBXQGJVMIEDTMYVIUJWLCIMIVIXEUAWAQSVRBHEYILRHIEAAYLEBBHNHHQMSIWGSZL

心雨翎馨

循环好好看看、错了、

qq_愿时光安好_04050009

应该是int i, j;int n; // n代表要排序的个数for (i = n-1; i > 0; i--) // 也可以都从i, j都从0开始 那么i就代表排序趟数 for (j = 0; j < i; j++) { if(arr[j] > arr[j+1]) temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; }不过我觉得这么写更直观 第一次两两交换 浮出一个最大数到n-1的位置上 n-1上已有序, i-- 如果有不同意见欢迎指正 建立一个临时结构体, 再套里面

尧叔

//一看结果就知道你少迭代了一个,遍历的深度不够,最后一个没冒上泡。

望远

for(i=0;i<6;i++) { for(j=0;j<5-i;j++) { } }

雪颲

for(j=i;j<6;j++)
随时随地看视频慕课网APP
我要回答