c语言排序插入函数 c语言使用函数排序

C语言,直接插入排序,要求:

真是搞不懂你们脑洞,一个插入排序还分成一堆函数写。。。

成都创新互联专注于盐城企业网站建设,成都响应式网站建设公司,商城开发。盐城网站建设公司,为盐城等地区提供建站服务。全流程专业公司,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

#includecstdio

int a[20];

void InputArraay(){

for(int i = 1; i = 10; i++)scanf("%d",a[i]);

}

void OutputArraay(){

for(int i = 1; i = 10; i++)printf("%d ",a[i]);

}

//插入排序

//1.数据分为两部分,一开始有序部分包含1个元素

//2.依次将无序部分的元素插入到有序部分当中

void Insert(int i){

int j = i-1, k = a[i];  //j为当前下标, k为无序部分第一个元素

while(j=1  ka[j]){ //找到k元素在有序部分的位置

a[j+1] = a[j];    //循环的时候直接右移有序数组,为k腾出位置

j--;    //不是k正确的位置,继续往前循环

}

a[j+1] = k;  //出来的时候j多减了1,要加回去

}

void Sort(){

//遍历无序部分,每次取出第一个元素

for(int i = 2; i = 10; i++){ 

Insert(i);

}

}

int main(){

InputArraay();

Sort();

OutputArraay();

return 0;

}

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语言,输入一组数进行排序,由大到小排列,用自定义函数实现

给你一个直接插入排序

#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语言 编写数组的插入函数

你只需要建立一个数组,将数组建立的大一点,然后分两次输入数,构建一个数组,在整体排序输出就行了

求在C语言的代码中加个排序函数

都搞好了。

#includestdio.h

#includestdlib.h

#includestring.h

#define LEN 30 /* 学号和姓名最大字符数,实际请更改 */

#define N 200 /* 最大学生人数,实际请更改*/

struct record

{

char code[LEN+1]; /* 学号 */

char name[LEN+1]; /* 姓名 */

int age;

char sex[3];

char time[LEN+1];

char add[LEN+1];

char tel[LEN+1];

char mail[LEN+1];

}stu[N];

int k=1,n,m;

int order[N];

void readfile();/* 函数声明 */

void sort();

void seek();

void modify();

void insert();

void del();

void display();

void save();

void menu();

int main()

{

while(k)

menu();

system("pause");

return 0;

}

void readfile()/* 建立信息 */

{

char *p="student.dat";

FILE *fp;

int i=0;

if ((fp=fopen("student.dat","r"))==NULL) /* 把此程序和文件student.dat放在同一目录下 */

{ printf("Open file %s error! Strike any key to exit!",p);

system("pause");

exit(0);

}

while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)

{

i++;

order[i]=i;

}

fclose(fp);

n=i;

printf("录入完毕!\n");

}

void seek()

{int i,j,item,flag;

char s1[LEN+1]; /* 以姓名和学号最长长度+1为准 */

printf("------------------\n");

printf("1.按学号查询\n");

printf("2.按姓名查询\n");

printf("3.退出本菜单\n");

printf("------------------\n");

while(1)

{ printf("请选择子菜单编号:");

scanf("%d",item);

flag=0;

switch(item)

{

case 1:

printf("请输入要查询的学生的学号:\n");

scanf("%s",s1);

for(i=0;in;i++)

if(strcmp(stu[i].code,s1)==0)

{ flag=1;

printf("该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 分别为:\n");

printf("%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

if(flag==0)

printf("该学号不存在!\n"); break;

case 2:

printf("请输入要查询的学生的姓名:\n");

scanf("%s",s1);

for(i=0;in;i++)

if(strcmp(stu[i].name,s1)==0)

{ flag=1;

printf("该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 分别为:\n");

printf("%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

if(flag==0)

printf("该姓名不存在!\n"); break;

case 3:return;

default:printf("请在1-3之间选择\n");

}

}

}

void sort() /*选择排序*/

{

int i,j,k,t;

for(i=0;in-1;i++)/*共扫视n-1遍*/

{

k=i;

for(j=i+1;jn;j++)

if(strcmp(stu[order[i]].code,stu[order[j]].code)0)

k=j;

if(k!=i)

{/*交换名次*/

t=order[i];

order[i]=order[k];

order[k]=t;

}

}

printf("通讯录资料按人名号码从低到高为:\n");

for(i=0;in;i++)

{

printf("%s %s %d %s %s %s %s %s\n",stu[order[i]].code,stu[order[i]].name,stu[order[i]].age,

stu[order[i]].sex,stu[order[i]].time,stu[order[i]].add,stu[order[i]].tel,stu[order[i]].mail);

}

}

void modify() /*修改信息*/

{int i,j,item,num;

char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准 */

printf("请输入要要修改的学生的学号:\n");

scanf("%s",s1);

for(i=0;in;i++)

if(strcmp(stu[i].code,s1)==0)

num=i;

printf("------------------\n");

printf("1.修改姓名\n");

printf("2.修改年龄\n");

printf("3.修改性别\n");

printf("4.修改出生年月\n");

printf("5.修改地址\n");

printf("6.修改电话号码\n");

printf("7.修改E-mail地址\n");

printf("8.退出本菜单\n");

printf("------------------\n");

while(1)

{ printf("请选择子菜单编号:");

scanf("%d",item);

switch(item)

{

case 1:

printf("请输入新的姓名:\n");

scanf("%s",s2);

strcpy(stu[num].name,s2); break;

case 2:

printf("请输入新的年龄:\n");

scanf("%d",stu[num].age);break;

case 3:

printf("请输入新的性别:\n");

scanf("%s",sex1);

strcpy(stu[num].sex,sex1); break;

case 4:

printf("请输入新的出生年月:\n");

scanf("%s",s2);

strcpy(stu[num].time,s2); break;

case 5:

printf("请输入新的地址:\n");

scanf("%s",s2);

strcpy(stu[num].add,s2); break;

case 6:

printf("请输入新的电话号码:\n");

scanf("%s",s2);

strcpy(stu[num].tel,s2); break;

case 7:

printf("请输入新的E-mail地址:\n");

scanf("%s",s2);

strcpy(stu[num].mail,s2); break;

case 8:return;

default:printf("请在1-8之间选择\n");

}

}

}

void insert()

{ int i=n,j,flag;

printf("请输入待增加的学生数:\n");

scanf("%d",m);

do

{ flag=1;

while(flag)

{ flag=0;

printf("请输入第 %d 个学生的学号:\n",i+1);

scanf("%s",stu[i].code);

for(j=0;ji;j++)

if(strcmp(stu[i].code,stu[j].code)==0)

{ printf("已有该学号,请检查后重新录入!\n");

flag=1;

break; /*如有重复立即退出该层循环,提高判断速度*/

}

}

printf("请输入第 %d 个学生的姓名:\n",i+1);

scanf("%s",stu[i].name);

printf("请输入第 %d 个学生的年龄:\n",i+1);

scanf("%d",stu[i].age);

printf("请输入第 %d 个学生的性别:\n",i+1);

scanf("%s",stu[i].sex);

printf("请输入第 %d 个学生的出生年月:(格式:年.月)\n",i+1);

scanf("%s",stu[i].time);

printf("请输入第 %d 个学生的地址:\n",i+1);

scanf("%s",stu[i].add);

printf("请输入第 %d 个学生的电话:\n",i+1);

scanf("%s",stu[i].tel);

printf("请输入第 %d 个学生的E-mail:\n",i+1);

scanf("%s",stu[i].mail);

if(flag==0)

{

order[i]=i;

i++;

}

}while(in+m);

n+=m;

printf("录入完毕!\n\n");

}

void del()

{ int i,j,k,flag=0;

char s1[LEN+1];

printf("请输入要删除学生的学号:\n");

scanf("%s",s1);

for(i=0;in;i++)

if(strcmp(stu[order[i]].code,s1)==0)

{ flag=1;

for(j=i;jn-1;j++)

stu[order[j]]=stu[order[j+1]];

}

if(flag==0)

printf("该学号不存在!\n");

if(flag==1)

{ printf("删除成功,显示结果请选择菜单6\n");

n--;

}

}

void display()

{ int i,j;

printf("所有学生的信息为:\n");

for(i=0;in;i++)

{

printf("%s %s %d %s %s %s %s %s\n",stu[order[i]].code,stu[order[i]].name,stu[order[i]].age,

stu[order[i]].sex,stu[order[i]].time,stu[order[i]].add,stu[order[i]].tel,stu[order[i]].mail);

}

}

void save()

{ int i;

FILE *fp;

fp=fopen("student.dat","w");

for(i=0;in;i++)

{ fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[order[i]].code,stu[order[i]].name,stu[order[i]].age,

stu[order[i]].sex,stu[order[i]].time,stu[order[i]].add,stu[order[i]].tel,stu[order[i]].mail);

}

fclose(fp);

}

void menu()/* 界面 */

{ int num;

printf(" \n\n简易学生通讯录系统\n\n");

printf("*****系统功能菜单*****\n");

printf("----------------------\n");

printf("1.读入学生信息\n");

printf("2.查询学生信息\n");

printf("3.修改学生信息\n");

printf("4.增加学生信息\n");

printf("5.按学号删除信息\n");

printf("6.显示当前信息\n");

printf("7.保存当前学生信息(要把修改保存到文件,退出程序前必须执行本项)\n");

printf("8.按学号从低到高排序\n");

printf("9.退出系统\n");

printf("----------------------\n");

printf("请选择菜单编号:");

scanf("%d",num);

switch(num)

{

case 1:readfile();break;/*在主函数中调用子函数时,子函数不要带上类型,这和声明子函数不同*/

case 2:seek();break;

case 3:modify();break;

case 4:insert();break;

case 5:del();break;

case 6:display();break;

case 7:save();break;

case 8:sort();break;

case 9:k=0;break;

default:printf("请在1-9之间选择\n");

}

}

c语言 在main()函数中输入一个字符串,调用插入排序函数对字符串进行由小到大

首先根据插入排序的原理,设计插入排序函数,函数传入参数是字符串数组和字符串数组的长度,函数无返回值。然后输入字符串,调用函数排序,最后输出排序后字符串。

参考代码:

#includestdio.h

#includestring.h

#define MAX 1000

void insert(char *a,int n)

{

int i,j;

char key;

for(i=1;in;i++)//控制需要插入的元素

{

key=a[i]; //key为要插入的元素

for(j=i;j0  a[j-1]key;j--) //查找要插入的位置,循环结束,则找到插入位置

{

a[j] = a[j-1]; //移动元素的位置.供要插入元素使用

}

a[j] = key; //插入需要插入的元素

}

}

int main()

{

char a[MAX];

int n;

gets(a);//输入字符串

n=strlen(a);

insert(a,n);//调用函数排序

printf("after:\n");

puts(a);  

return 0;

}


当前标题:c语言排序插入函数 c语言使用函数排序
文章转载:http://ybzwz.com/article/doddpos.html