问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言排序问题,急~C语言或C++均可。

发布网友 发布时间:2022-10-09 15:18

我来回答

2个回答

热心网友 时间:2023-11-24 11:28

/*各种排序操作*/
#include<stdio.h>
#define MAX 100 /* 函数声明 */
void charu_sort(int d[],int n);
void jiaohuan_sort(int d[],int n);
void xuanze_sort(int d[],int n);
void xier_sort(int d[],int n,int dd[],int t); /* 希尔排序 */
void kuaisu_sort(int d[],int min,int max); /* 快速排序 */
void i_sort(int d[ ],int n); /* 堆排序 */
/* 主函数*/
void main( )
{ int d[MAX],dd[MAX];
int s,q,t,n,k,m,ch;
/*线性表结点数*/
printf("How many nodes?\n");
scanf("%d",&n);
/*输入线性表各结点*/
for(s=0;s<n;s++)
{printf("Input No %d value\n",s+1);<br> scanf("%d",&d[s]);<br> }
/*选择排序方法*/
printf("Please input your choice(1-6):");
scanf("%d",&ch);
switch(ch)
{ case 1:
printf("This is straight insertion sort!\n");
s=1;
charu_sort(d,n);
getch();
break;
case 2:
printf("This is bubble sort!\n");
jiaohuan_sort(d,n);
getch();
break; case 3:
printf("This is simple selection sort!\n");
xuanze_sort(d,n);
getch();
break;
case 4:
printf("This is shell sort!\n");
/*initiate the array */
s=n;q=0;
while(s>1)
{
dd[q++]=s/2;
s=s/2;
}
/*the last increment is 1*/
xier_sort(d,n,dd,q);
getch();
break;
case 5:
printf("This is quick sort!\n");
kuaisu_sort(d,0,n-1);
getch();
break;
case 6:
printf("This is heap sort!\n");
i_sort(d,n);
getch();
break;
default:
printf("1--------------straight insertion sort!\n");
printf("2--------------bubble sort!\n");
printf("3--------------simple selection sort!\n");
printf("4--------------shell sort!\n");
printf("5--------------quick sort!\n");
printf("6--------------heap sort!\n");
return;
}
/*输出排序后的线性表*/
for(s=0;s<n-1;s++)
printf("%d,",d[s]);
printf("%d",d[s]);
printf("\n");
getch();
} /*各排序方法函数说明*//*直接插入排序*/void charu_sort(int d[],int n)
{
int t,q,s=1;
while(s<n)
{ t=d[s]; /*t is a temporary variable*/
for(q=s-1;q>=0&&t<d[q];q--)
d[q+1]=d[q]; /*the node move right*/
d[q+1]=t; /*if the value of q is -1,it does not exist a number
whose value is smaller than t,else,it must exist q+1 numbers whose value is
smaller than t at least*/
s++;
}
}
/*冒泡排序(交换排序)*/
void jiaohuan_sort(int d[],int n)
{
int q,s,t,m=0;
while(m<n-1)/*if m is equal to n-1,end the cycle*/
{ q=n-1;
for(s=n-1;s>=m+1;s--)
if(d[s]<d[s-1])
{ t=d[s];
d[s]=d[s-1];
d[s-1]=t;
q=s;/*j note the current location where the exchanging
happens this time*/
}
m=q;
}
}/*选择排序*/
void xuanze_sort(int d[],int n)
{
int s,t,q,m=0;
while(m<n-1)/*if m is equal to n-1,end the cycle*/
{ q=n-1;
for(s=n-1;s>=m+1;s--)
if(d[s]<d[s-1])
{ t=d[s];
d[s]=d[s-1];
d[s-1]=t;
q=s;/*j note the current location where the exchanging
happens this time*/
}
m=q;
}
}

/* 希尔排序 */void xier_sort(int d[],int n,int dd[],int t)
{ int s,x,k,h;
int y;
for(s=0;s<t;s++)
{h=dd[s];/*select increment*/<br> for(x=h;x<n;x++)/*j point out the location of the number inserted*/<br> { y=d[x];<br> for(k=x-h;k>=0&&y<d[k];k-=h)<br> d[k+h]=d[k];/*move back*/<br> d[k+h]=y;<br> }
}
}
/* 快速排序 */void kuaisu_sort(int d[],int min,int max)
{ int head,tail;
int t;
if(min<max)
{ head=min;
tail=max;
t=d[head];
while(head!=tail)
{ while(head<tail&&d[tail]>=t)
tail--;
if(head<tail)
d[head++]=d[tail];/*exchange the nodes*/
while(head<tail&&d[head]<=t)
head++;
if(head<tail)
d[tail--]=d[head];
}
d[head]=t;
kuaisu_sort(d,min,head-1);
kuaisu_sort(d,tail+1,max);
}
} /*堆调整函数*/void itiaozheng(int d[],int s,int n)
{ int q;
int t;
t=d[s];
while((q=2*s+1)<n)/*it has left child*/
{ if(q<n-1&&d[q]<d[q+1]) q++;
if(t<d[q])
{ d[(q-1)/2]=d[q];
s=q;
}
else
break;
}
d[(q-1)/2]=t;/*put it in the final location*/
}

/* 堆排序 */void i_sort(int d[],int n)
{ int s;int t;
s=(n-1)/2;
while(s>=0)
{ itiaozheng(d,s,n);
s--;
}
s=n-1;
while(s>0)
{ t=d[0];/*exchange the nodes*/
d[0]=d[s];
d[s]=t;
itiaozheng(d,0,s);/*after exchangeing£¬readjust the heap*/
s--;
}
}

热心网友 时间:2023-11-24 11:28

#include "stdio.h"
#include "stdlib.h"
#define N 1000
void main()
{
int i,j,k,l,x[N],p[N];
for(i=1;i<=N;i++){
x[i]=rand();
}
for(i=1;i<=N;i++){
for(j=i;j<=N;j++){
if(j==N){
break;
}else{
if(x[i] > x[j+1]){
l = x[i];
x[i] = x[j+1];
x[j+1] = l;
}
}
}
}
for(i=1;i<=N;i++){
printf("%d\t",x[i]);
}
} C语言写出来的!!不知道你那些数是什么,我用随机产生的数进行排序!!排序方法是冒泡排序法,弄了我那么多时间!!不知道你排序那是1000还是100,要100的话,就将#define N 1000 那里的1000改成100就行了!!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪些女人不值得男人珍惜? 潘集区第一小学优秀学生 优秀干部登记表 ...没想到洗几次更大了 有什么办法能让他变小点吗 纯棉的 济南哪里卖手机放心,便宜 飞利浦手机在烟台的售后服务在哪里 ? 济南哪里有飞利浦专卖店 微信群内发红包,怎么会让陌生人就领取了???为什么?? 我的戴尔笔记本电脑 无意中出现飞行模式。关闭不了。求大家帮忙_百度知 ... 什么是受伤庄股 大学毕业,想要开药店,要怎样申请大学生创业贷款?能贷多少?在哪办理?(云南楚雄)谢谢!!! 高考家长祝福语 家长对孩子鼓励的话(汇总) 一天两个鸡蛋一起吃好还是分开? 月亮里面有什么绘画 请给我今年农历六月的月相,要有时间,方位以及月相的画图(不要知识!要电脑画图中你画的图)急!!!!!!!!!!!!!! 怎么在word里面画图,那种地球和月球运行的平面图 中秋节的绘画怎么画 辽中县霸道车友会微信群 20年后的相遇作文 睡觉之前喝中药好吗? 如何评价新款的 Kindle Paperwhite 3 有人说现在的网游都很坑钱,你玩游戏充过钱吗? 你觉得打游戏应不应该充值? 明日之后区域调查是什么 该不该提前还房贷呢? 请问一下蚂蚁金服是做什么的 猛犸象牙扳指断开了怎么修复? 猛犸牙雕件断了用什么胶粘好? 猛犸象牙沁油还能恢复吗 nba 2k13 面补怎么用 放进游戏目录里然后怎么办 100w个数,用最快的方法,求从小到大排序后的前五个数(cc++程序) 请问明日之后海底宝藏在哪? 傈僳族亲爱的怎么说 天然气管道CAD图怎么画啊?求一份天然气管道施工图的CAD图看看. 车坛优惠看这里,红旗H9推出线上购车优惠价,首付只需6.88万 怎样做汤圆,家常汤圆的做法大全,汤圆做法图解 给鱼换水控水6天可以嘛? 从前期思想到最后成品,一幅柔美的老虎实如何画出来的? 殷明尚生宣新工笔画虎技法步骤图 广州理工实验学校民办的学费多少 广州的民办小学一学期收多少钱? 广州天省实验学校初中收费 广州市香江中学高中部学费 宝宝大便不干但总是拉不出来怎么办 梦到在天上趴在床垫上飞,谁能来给我解解梦,谢谢! 想问玛湖油田位于哪个城市 花生地里的野绿豆苗用什么农药去除 为什么狗狗会咬人 订婚需要穿什么衣服 订婚不能穿什么颜色 第二个是什么字