‘壹’ c语言 一组数据的排序问题
//使用qsort排序函数
//qsort(void*base,size_tnitems,size_tsize,int(*compar)(constvoid*,constvoid*))
#include<stdlib.h>
#include<stdio.h>
//定义结构
typedefstructtag_Persion{
charname;
intage,group,devide,position;
}
Persion;
//比较算法组别>细分>职位>年龄
intcomp(constvoid*_a,constvoid*_b){
intre;
Persiona=*(Persion*)_a;
Persionb=*(Persion*)_b;
//组别
if((re=a.group-b.group))returnre*40000;
//细分
if((re=a.devide-b.devide))returnre*3000;
//职位
if((re=a.position-b.position))returnre*200;
//年龄
if((re=a.age-b.age))returnre;
return0;
}
//显示数据
voidshow(Persion*s,intl){
printf(" 名称 年龄 组别 细化 职业 ");
for(inti=0;i<l;i++){
printf(" A%c%8d%8d%8d%8d ",
s[i].name,s[i].age,s[i].group,
s[i].devide,s[i].position);
}
}
//主函数
voidmain(){
//数据
int_data[]={
'0',33,6,1,2,
'1',42,6,1,6,
'2',40,6,1,5,
'3',52,6,2,6,
'4',36,6,2,2,
'5',51,6,2,4,
'6',23,5,1,3,
'7',48,5,1,2,
'8',30,5,1,1};
intlen=sizeof(_data)/sizeof(Persion);
Persion*data=(Persion*)_data;
//快速排序(C语言函数)
qsort(data,len,sizeof(Persion),comp);
//显示
show(data,len);
}
名称 年龄 组别 细化 职业
A8 30 5 1 1
A7 48 5 1 2
A6 23 5 1 3
A0 33 6 1 2
A2 40 6 1 5
A1 42 6 1 6
A4 36 6 2 2
A5 51 6 2 4
A3 52 6 2 6
‘贰’ 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;
}
(2)c语言怎么将一组数据顺序排列扩展阅读
C语言排序法
把一个数组进行排序可以使用选择排序法。选择排序法的原理在是每一趟循环寻找数组中最小的数的下标,然后按照递增的顺序放入数组中。
循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位,这样就排好了一个元素。
需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。
‘叁’ C语言,对一组数据排序,同时使用多种排序方法
/* 冒泡排序法 */
#include "stdio.h"
#define SIZE 10
void Paixi(int a[]){
int pass,i,hold;
for(pass=0;pass<=SIZE-1;pass++) /* pass */
for(i=0;i<=SIZE-2;i++) /* one pass */
if(a[i]>a[i+1]) /* one comparison */
{
hold=a[i];
a[i]=a[i+1];
a[i+1]=hold;
}
}
void main()
{
int i, a[SIZE]={1,5,2,4,8,6,14,21,30,25};
printf("Data item in original order \n");
for(i=0;i<=SIZE-1;i++)
printf("%4d",a[i]);
Paixi(a);
printf("\n Data items in ascending order \n");
for(i=0;i<=SIZE-1;i++)
printf("%4d", a[i]);
printf("\n");
}
‘肆’ C语言中如何对一组数进行排列
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int aa[100];
int bb[100];
void main()
{
void ReadDat();//随机产生100个学生成绩存放到数组aa中,随机产生100个相应的学号存放到bb数组中
void WriteDat();//输出排序后的成绩和相应的学号。
void jsSort();
ReadDat();
printf("*********************************\n");
printf("初始成绩单为:\n");
WriteDat();
jsSort();
printf("*********************************\n");
printf("排序后成绩单为:\n");
WriteDat();
return ;
}
void ReadDat()
{
srand(time(NULL));//随机数种子
for(int i=0;i<100;i++)
{
aa[i]=1+(int)(100.0*rand()/(RAND_MAX+1.0));//产生随机数
}
for(i=0;i<100;i++)
{
bb[i]=1+(int)(100.0*rand()/(RAND_MAX+1.0));//产生随机数
}
}
void WriteDat()
{
int i;
printf("序号\t成绩: \t学号: \n");
for(i=0;i<100;i++)
printf("%d\t成绩:%3d\t学号:%d\n",i+1,aa[i],bb[i]);
}
void jsSort()
{
int i,j,t;
for(i=0;i<99;i++)
for(j=0;j<99-i;j++)
{
if(aa[j]<aa[j+1])
{
t=aa[j];///////////冒泡排序,同时调整对应的学号数组bb
aa[j]=aa[j+1];
aa[j+1]=t;
t=bb[j];
bb[j]=bb[j+1];
bb[j+1]=t;
}
}
}
‘伍’ C语言如何输入十个数,按从大到小顺序排列!
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:
#include<stdio.h>
int main()
{
int i,j,a[10],t;
printf("输入数");
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10;j++)
if (a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("从大到小");
for (i = 0; i < 10; i++)
printf("%2d", a[i]);
return 0;
}
(5)c语言怎么将一组数据顺序排列扩展阅读:
代码还可以设计,如下:
#include<stdio.h>
int main()
{
int a[10],i,j,t;//定义数组;
for(i=0;i<10;i++){
scanf("%d",&a[i]);//给数组赋值;
}
for(i=0;i<9;i++)//10个数,进行9轮比较;
for(j=0;j<10-i;j++){//第一个数比较9次,依次递减;
if(a[j]>a[j+1]) {//交换值;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);//输出数组的值;
}
return 0;
}
}
printf("the sorted numbers: ");
for(i=0;i<10;i++)
printf(" %d",a[i]);
printf(" ");
}
‘陆’ 如何用C语言设计程序排列6个数字的大小顺序
排序数组可以使用冒泡算法:如果前一个数据比后一个大,则交换。
{
int i,j,t,a[6];
printf("Please input 6 integers: ");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++) /* 冒泡法排序 */
for(j=0;j<6-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交换a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}
优点:
简洁紧凑、灵活方便:C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
以上内容参考:网络-c语言程序设计
‘柒’ C语言链表中如何实现对一组数据进行排序
这个是我曾经编写的一个管理里面的一个模块
就是按链表的某个变量进行排序的
希望您能看明白
Ranking_inquires(struct
student
*head)
{
int
B=A,i=0;
struct
student
*temp=head;
struct
student
*p=head;
struct
student
*q=head;
printf("\t\t
按总分
名次查询
\n
");
printf("姓名
总分
名次\n");
while(p->next!=NULL&&A>1)//根据成员的成绩对结构体
进行排序
{
p->sum=p->math+p->English+p->chinese+p->computer;
q=p->next;
p=p->next;
while(q->next!=NULL)
{
q=q->next;
if(p->sum
sum)
{
h.stu_id1=p->stu_id;
strcpy(h.name1,p->name);
h.English1=p->English;
h.computer1=p->computer;
h.math1=p->math;
h.sum1=p->sum;
h.chinese1=p->chinese;
p->stu_id=q->stu_id;
strcpy(p->name,q->name);
p->English=q->English;
p->computer=q->computer;
p->math=q->math;
p->sum=q->sum;
p->chinese=q->chinese;
q->stu_id=h.stu_id1;
strcpy(q->name,h.name1);
q->English=h.English1;
q->computer=h.computer1;
q->math=h.math1;
q->sum=h.sum1;
q->chinese=h.chinese1;
}
}
A--;
++i;
p->ranking=i;
}
这个是定义的全局变量
int
A=0;
int
cc;
struct
student
{
int
stu_id;
char
name[20];
float
English;
float
computer;
float
chinese;
float
math;
float
sum;
int
ranking;
struct
student
*next;
};
struct
stu
{
int
stu_id1;
char
name1[20];
float
English1;
float
computer1;
float
chinese1;
float
math1;
float
sum1;
}h;
‘捌’ C语言,输入一组数进行排序,由大到小排列,用自定义函数实现
给你一个直接插入排序
#include "stdio.h"
void InsertSort(int a[], int left, int right) {//对数组a从下标为left到right区域进行直接插入排序
int i, j, tmp;
for(i = left + 1; i <= right; i++) {
for(j = i - 1, tmp = a[i]; j >= left && tmp > a[j]; j++)
a[j + 1] = a[j];
a[j + 1] = tmp;
}
}
void main( ) {
int i, n, a[100];
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
InsertSort(a, 0, n - 1);
printf("\n");
for(i = 0; i < n; i++) printf("%d\t", a[i]);
}
‘玖’ 编写C语言程序,把一个数组按从小到大的次序排列起来
源程序以及算法注释如下:
#define _CRT_SECURE_NO_WARNINGS//VS编译环境需要进行宏定义,VC6.0可忽略
#include<stdio.h>//输入输出头文件
int main()
{
int number[10], New_number[10];//定义数组的数据类型为整型
int i, j, m, n, k;//定义变量的数据类型为整型
printf("input 10 <int> number:");//文字提示
for (i = 0; i <= 9; i++)//用循环输入数值给数组number并赋给数组New_number
{
scanf("%d", &number[i]);//输入10个整形数字到数组中
New_number[i] = number[i];//数组number元素赋给数组New_number
}
for (n = 0; n <= 8; n++)//要进行(10-1)组比较
for (j = 0; j <= 8 - n; j++)//每组进行(10减第几组)次比较
{
if (number[j] > number[j + 1])//比较大小并将小的赋给前面的数组
{
k = number[j];//将相对较大的元素赋值给中间元素
number[j] = number[j + 1];//将相对较小的元素送达前面一个位置
number[j + 1] = k;//将中间变量元素送给后面一个位置
}
if (New_number[j] < New_number[j + 1])//比较大小并将大的赋给前面的数组
{
k = New_number[j + 1];//将相对较小的元素赋值给中间元素
New_number[j + 1] = New_number[j];//将相对较大的元素送达前面一个位置
New_number[j] = k;//将中间变量元素送给后面一个位置
}
}
printf("min-->max:
");//文字提示
for (m = 0; m <= 9; m++)//依次从小到大输出
printf("%d ", number[m]);//输出元素
printf("
");
printf("max-->min:
");//文字提示
for (m = 0; m <= 9; m++)//依次从大到小输出
printf("%d ", New_number[m]);//输出元素
printf("
");
return 0;
}
程序运行结果如下:
(9)c语言怎么将一组数据顺序排列扩展阅读:
其他简单实现程序:
#include<stdio.h>
int main()
{
int a[10]={0};
int i,j,temp;
for(i = 0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i<10;i++)
{
for(j = 0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
‘拾’ c语言编程: 将一组数按从大到小的顺序排序
#include <stdio.h>
main()
{
int x;
printf("请输入要排序数字个数:");
scanf("%d",&x);
int i,j,k,a,b,num[x];
printf("输入数据:");
for(i=0;i<x;i++)
scanf("%d",&num[i]);
for(j=0;j<x;j++)
{
for(k=j+1;k<x;k++)
if(num[k]>num[j])
{
a=num[j];
num[j]=num[k];
num[k]=a;
}
}
for(b=0;b<x;b++)
printf("%d ",num[b]);
return 0;
}
(10)c语言怎么将一组数据顺序排列扩展阅读:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。