㈠ 用c语言怎么样按总成绩降序排序后显示学生的数据
冒泡和选择排序两种比较简单
举个例子 冒泡
数据在数组score[N]中
for (i=0;i<N;i++}
{
for (j=0;j<N-1;j++)
{
if (score[j]<score[j+1])
{
int temp;
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
这样数据就从大到小排好了 然后使用循环输出学生数据就可以了
㈡ 关于C语言进行降序排列
#include "stdio.h"
#define MAX 10
void sort(int *p,int n)
{int i,j;
int temp; //记录每一轮比较中最大值
int maxindex; //记录每一轮比较中最大值的下标
for (i=0;i<n;i++)
{
temp=p[i];
maxindex=i;
for (j=i+1;j<n;j++)
if (temp<p[j]) {temp=p[j];maxindex=j;}
if(maxindex!=i){p[maxindex]=p[i];p[i]=temp;}
}
}
/*
void sort(int *p)
{int i,j,k;
for (i=0;i<9;i++)
for (j=i+1;j<10;j++)
if (p[i]<p[j]) {k=p[i];p[i]=p[j];p[j]=k;}
这个是简单选择排序,但是执行效率没有上面的高。不过对于比较小的基数,还是看不出来效率的优劣,如果在基数上百万时,效率高的执行时间将节省不少。
*/
main()
{
int a[MAX],i;
for (i=0;i<MAX;i++)
scanf("%d",&a[i]);
sort(a,MAX);
for(i=0;i<MAX;i++)
printf("%d ,",a[i]);
}
㈢ C语言编程,选择排序,输入n个整数,对其进行降序排序,n由键盘输入
#include<stdio.h>
#include<stdlib.h>
voidmain()
{
int*a,i,j,n;
scanf("%d",&n);
a=(int*)malloc(sizeof(int));
for(i=0;i<n;i++)
{
intt;
scanf("%d",&t);
for(j=i-1;j>=0;j++)
if(t<a[j])break;
elsea[j+1]=a[j];
a[j+1]=t;
}
for(i=0;i<n;i++)
printf("%d",a[i]);
}
㈣ C语言选择法排序
#include<stdio.h>
#defineM 5
void main()
{
int b[M],i,j,t,k;
for(i=0;i<M;i++)
scanf("%d",&b[i]);
for(i=0;i<M-1;i++)
{
for(k=i,j=i+1;j<M;j++)
if(b[k]<b[j])
k=j;
if(i!=k)
{
t=b[i];
b[i]=b[k];
b[k]=t;
}
}
for(i=0;i<M;i++)
printf("%d ",b[i]);
}
错在大括号位置加错了。
代码:
#include<stdio.h>
void SelectionSort(int *num,int n)
{
int i = 0;
int min = 0;
int j = 0;
int tmp = 0;
for(i = 0;i < n-1;i++)
{
min = i;//每次讲min置成无序组起始位置元素下标
for(j = i;j < n;j++)//遍历无序组,找到最小元素。
{
if(num[min]>num[j])
{
min = j;
}
}
if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置
{
tmp = num[min];
num[min] = num[i];
num[i] = tmp;
}
}
}
(此处空一行)
int main()
{
int num[6] = {5,4,3,2,9,1};
int i = 0;
SelectionSort(num,6);//这里需要将数列元素个数传入。有心者可用sizeof在函数内求得元素个数。
for(i = 0;i < 6;i++)
{
printf("%d ",num[i]);
}
return 0;
}
㈤ c语言中按单科降序(选择)排序
void Sort_sub(Student *s,int n) //按单科降序(选择)排序
{int i,j;
char t[10];
s=head;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(s->num,s->next->num)>0)
{
strcpy(t,s->next->cgrade);
strcpy(s->next->cgrade,s->cgrade);
strcpy(s->cgrade,t);
strcpy(t,s->next->mgrade);
strcpy(s->next->mgrade,s->mgrade);
strcpy(s->mgrade,t);
strcpy(t,s->next->egrade);
strcpy(s->next->egrade,s->egrade);
strcpy(s->egrade,t);
strcpy(t,s->next->name);
strcpy(s->next->name,s->name);
strcpy(s->name,t);
}
s=s->next;
}
s=head;
}
}
㈥ C语言:用选择排序法对一个数组里的数进行排序,从小到大,要求选出小的进行排序
#include<stdio.h>
intmain()
{
inti=0;
inta[10]={0,5,2,3,6,9,8,7,4,1};
intj=0;
inttmp=0;
intm=sizeof(a)/sizeof(a[0]);//s数组大小
for(i=0;i<m-1;i++)//比较m-1次
{
for(j=0;j<m-i-1;j++)//最后一次比较a[m-i-1]与a[m-i-2]
{
if(a[j]>a[j+1])//如果a[j]比a[j+1]大则交换内容
{
tmp=a[j+1];
a[j+1]=a[j];
a[j]=tmp;
}
}
}
for(i=0;i<m;i++)
{
printf("%d",a[i]);//打印
}
printf(" ");
return0;
}
(6)选择排序c语言降序扩展阅读
C语言排序法
把一个数组进行排序可以使用选择排序法。选择排序法的原理在是每一趟循环寻找数组中最小的数的下标,然后按照递增的顺序放入数组中。
循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位,这样就排好了一个元素。
需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。
㈦ C语言,选择法进行降序排序。我写的选择排序程序如下,但运行之后还是原来数组的顺序 请大神指教
有两处错误:
1:s[i]-->s[max]
2:第二段代码,应该是在第二重循环执行完之后。
不理解可以追问
㈧ 求几个C语言的程序 顺序查找,排序(升序和降序),冒泡排序,选择排序,直接插入排序和二分插入排序。
首先声明下面的程序不全是我写的,还有就是你说的二分插入排序 不知道是什么,我想应该是二分法查找已经排序的数组吧!!!
希望你能满意。
1.顺序查找
#include<stdio.h>
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i,x,y;
printf("输入你要查找的数:\n");
scanf("%d",&x);
y=0; //标记是否已找到,y=1表是找到了,y=0表示没找到
for(i=0;i<10;i++) //循环,把x和数组中的元素一个个比较
{
if(x==a[i]) //如果x=a[i]说明已经找到
{
y=1; //把y变成1,说明已经找到了
printf("你要查找的数%d在第个%d位置\n",x,i+1); //输出找到的相关信息
break; //跳出循环
}
}
if(y==0)printf("无法找到你要查找的数\n"); //y=0表示找不到
}
2.排序(升序和降序)
#include<stdio.h>
void main()
{
int a[5]={};
int i,j;
int temp=0;
for(i=0;i<5;i++)
{
printf("请输入第%d个整数\n",i+1);
scanf("%d",&a[i]);
}
for(i=1;i<5;i++)
{
for(j=0;j<5-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<5;i++)
{
printf("排序后的整数:%d\t",a[i]);
}
}
现在是升序的。。如果想改成降序 只要交换一下大小的顺序就好了
3.冒泡排序
#include<stdio.h>
main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++)
scanf ("%d,",&a[i]);
for(j=0;j<=9;j++)
{ for (i=0;i<10-j;i++)
if (a[i]>a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
for(i=1;i<11;i++)
printf("%5d,",a[i] );
printf("\n");
}
4.选择排序
#include<stdio.h>
void selectSort(int a[],int n)
{int t,i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k])
k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
main()
{int a[100],n,i;
scanf("%d",&n);
puts("Arrange:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
selectSort(a,n);
puts("Sorted Arrange:");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
getch();
}
5.直接插入排序
#include "stdio.h"
#include "conio.h"
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{
for(i=0;i<10;i++)
{
if(a[i]>number)
{
temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{
temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("%6d",a[i]);
getch();
}
6.二分法查找
int binarysearch(int a[],int x,int n)
{
int left,right,middle;
left=0;
right=n-1;
while(left<=right)
{
middle=(left+right)/2;
if(x==a[middle])
return middle;
if(x>a[middle])
left=middle+1;
else right=middle-1;
}
return -1;
}
㈨ c语言的两种排序
1、选择排序法
要求输入10个整数,从大到小排序输出
输入:2 0 3 -4 8 9 5 1 7 6
输出:9 8 7 6 5 3 2 1 0 -4
代码:
#include<stdio.h>
int main(int argc,const char*argv[]){
int num[10],i,j,k,l,temp;
//用一个数组保存输入的数据
for(i=0;i<=9;i++)
{
scanf("%d",&num<i>);
}
//用两个for嵌套循环来进行数据大小比较进行排序
for(j=0;j<9;j++)
{
for(k=j+1;k<=9;k++)
{
if(num[j]<num[k])//num[j]<num[k]
{
temp=num[j];
num[j]=num[k];
num[k]=temp;
}
}
}
//用一个for循环来输出数组中排序好的数据
for(l=0;l<=9;l++)
{
printf("%d",num[l]);
}
return 0;
}
2、冒泡排序法
要求输入10个整数,从大到小排序输出
输入:2 0 3-4 8 9 5 1 7 6
输出:9 8 7 6 5 3 2 1 0-4
代码:
#include<stdio.h>
int main(int argc,const char*argv[]){
//用一个数组来存数据
int num[10],i,j,k,l,temp;
//用for来把数据一个一个读取进来
for(i=0;i<=9;i++)
{
scanf("%d",&num<i>);
}
//用两次层for循环来比较数据,进行冒泡
for(j=0;j<9;j++)
{
for(k=0;k<9-j;k++)
{
if(num[k]<num[k+1])//num[k]<num[k+1]
{
temp=num[k];
num[k]=num[k+1];
num[k+1]=temp;
}
}
}
//用一个for循环来输出数组中排序好的数据
for(l=0;l<=9;l++)
{
printf("%d",num[l]);
}
return 0;
}
(9)选择排序c语言降序扩展阅读:
return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。
return语句用来结束循环,或返回一个函数的值。
1、return 0,说明程序正常退出,返回到主程序继续往下执行。
2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。
㈩ c语言 选择法对10个整数降序排列
//选择法排序
#include <stdio.h>
main(void)
{
int a[10],i,j,k,t;
printf("请输入排序数列:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<10-1;j++)
{
k=j;
for(i=j+1;i<10;i++)
if(a[k]>a[i])
k=i;
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
printf("从大到小排序:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
getch();
}