那选择排序和冒泡有什么区别呢??
选择排序是一种排序方法的类型.
冒泡排序属于交换排序的一种.
----------------解决方案--------------------------------------------------------
选择:顾名思义,就是每次选出待排序中符合你目的的那个元素.
交换:通过两两交换达到排序的目的.
----------------解决方案--------------------------------------------------------
比较太多次了
void sort(float a[] , int n )
{
int i;
int flag=0;
float f;
do
{
flag=0;
for(i=0;i<n-1;i++ )
if (a[i+1]>a[i])
{
flag=1;
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
}while(flag);
}
----------------解决方案--------------------------------------------------------
11楼正解
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define N 5
void main()
{
int i=0,j=0,temp=0; // 冒泡排序需要的相应变量,i和j循环变量,temp中间颠倒的变量
int grade[N]={0}; // 排列的数组
printf("请输入学员的成绩\n",N); // 为数组赋值
for(i=0;i<N;i++)
{
printf("第%d个为:", i+1);
scanf("%d",&grade[i]);
fflush(stdin);
}
// 排序公式版
for(i=N-2;i>=0;i--)// 表达式中循环变量的写法是公式?
{
for(j=N-1;j>=N-1-i;j--) // 表达式中循环变量的写法是公式?
{
if (grade[j]<grade[j-1]) // 这里的<号或者>号,决定了是排序的顺序
{
// 交换值-得固定模式
temp=grade[j];
grade[j]=grade[j-1];
grade[j-1]=temp;
}
}
}
// 显示排序结果
printf("排列后的成绩为:\n");
for(i=0;i<N;i++)
{
printf("%5d",grade[i]);
}
printf("\n");
}
----------------解决方案--------------------------------------------------------
解释的很清楚了
flag可以提前退出 减少比较次数
----------------解决方案--------------------------------------------------------