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

C语言数组排序方法

发布网友 发布时间:2022-04-23 04:58

我来回答

13个回答

热心网友 时间:2022-05-22 02:49

选择排序的原理是,每次从待排序数字中挑选出最大(最小)数字,放在有序序列的末尾。实际操作中,只需要在这个数组中将挑出来的数字与前面的数字交换即可。例如:4
1 5
2 3找到最小的1,1和4交换1
4 5
2
3找到最小的2,2和4交换1
2
5
4
3找到最小的3,3和5交换1
2
3
4
5找到最小的4,4和4交换(不交换也可)可见,选择排序需要一个双重循环来完成,因此它的复杂度是O(n^2)在数据量比较大时,不建议使用这种排序方法。 其他排序方法有很多,你甚至可以自己根据不同数据规模设计不同的排序方法。比较常见的有冒泡排序,插入排序(这两种和选择排序一样,都是O(n^2)),二分法插入排序(降低了一些复杂度,但是涉及到大规模数据移动,效率依然不高),快速排序(平均复杂度O(nlogn),但是不稳定,最坏情况O(n^2)),随机化快速排序(很大程度上避免了最坏情况的出现),堆排序(O(nlogn),编程复杂度高),基数排序(理论复杂度O(n),实际要比这个慢。甚至能应付字符串排序,但是编程复杂度高,牵扯到其他数据结构),桶排序(O(n),编程简单,效率高,但是应付的数据范围不能太大,受到内存大小的*)。 平时比较常用的就是快速排序,程序简单,效率也可以接受。 这是我了解的一些东西,希望对你有帮助。

热心网友 时间:2022-05-22 04:07

很简单啊,说白了就是找“最大值”和“最小值”,然后分别zd用变量存起来,再进行专数组元素的移位即可。当然数据结构用“链表”也可以,但都差不多......................还不属如自己写一个可变长数组。

热心网友 时间:2022-05-22 05:42

/*
写好了,冒泡排序
然后用变量定义数组
很好理解,你看看吧
如果有啥问题追问一下
哇,写完了
我飘~
*/
#include
#include
int
main(void)
{
long
box=0l;
int
n=0,
i1=0,
i2=0;
printf("输入数组元素个数:4");
scanf("%d",&n);
long
array[n];
for(i1=0;i1
",i1+1);
scanf("%d",&array[i1]);
}
for(i1=0;i1
0;i1--,i2++)
printf("%3d>%d\n",i2,array[i1]);
getch();
return
0;
}

热心网友 时间:2022-05-22 07:33

这是倒序,不是排序。e68a847a686964616f31333330343236
下面代码运行结果:
输入n:
6
输入6个数:
12
15
29
38
220
44
倒序后:
44
220
38
29
15
12
#include
<stdio.h>
#define
N
256
void
inverse(int
*in,
int
*out,
int
n)
{
int
i;
for(i
=
0;
i
<
n;
i
++){
out[i]
=
in[n-1-i];
}
}
int
main()
{
int
in[N];
int
out[N];
int
n
=
0;
int
i
=
0;
printf("输入n:
");
scanf("%d",
&n);
if(n
>
N)
n
=
N;
printf("输入%d个数:
",
n);
for(i
=
0;
i
<
n;
i
++){
if(scanf("%d",
in+i)!=1)
break;
}
n
=
i;
inverse(in,
out,
n);
printf("倒序后:
");
for(i
=
0;
i
<
n;
i
++){
printf("%d
",
out[i]);
}
printf("\n");
return
0;
}

热心网友 时间:2022-05-22 09:41

冒泡排序,大数像一个气泡一样,一次次往高的地方走。最后的结果是从小到大的排列

热心网友 时间:2022-05-22 12:06

像是选择法排序,但不太简练!
正确的选择法为:
#include <stdio.h>
void main(void)
{
int a[9]={3,42,55,546,43,323,54,121,32},i,j,l,temp;
for(i=0;i<9;i++)
for(j=i+1;j<8;j++)
if(a[i]<a[j])
{temp=a[i];
a[i]=a[j];
a[j]=temp;}
for(l=0;l<9;l++)
printf("%d\n",a[l]);
}
正确的冒泡法为:
#include <stdio.h>
void main(void)
{
int a[9]={3,42,55,546,43,323,54,121,32},i,j,l,temp;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;}
for(l=0;l<9;l++)
printf("%d\n",a[l]);
}

热心网友 时间:2022-05-22 14:47

本来看着应该是像冒泡法,但好像又有点小bug。
for(i=0;i<9;i++)
for(j=i;j<9;j++)//思想是先找当前最大的数。第一次要比较9次,第二次8次,第三次7次.......

热心网友 时间:2022-05-22 17:45

冒泡排序法
for(i=0;i<9-1;i++)//排八次就可以了
for(j=0;j<9-i;j++)//外循环执行一次,内循环相应操作的数字少一个

热心网友 时间:2022-05-22 21:00

1.选择排序思想:
假定
按从大到小排序,比较
数组
中所有数的
大小
,挑出最大的
元素
将其与第一个元素交换位置,然后比较除第一个元素外其他各元素的大小,挑出最大的元素与第二个元素交换位置,依此类推,完成排序。
2.给你解释开头的n-2:k=0
to
k=n-2,k总共取n-1个元素,当k=n-2时,对应a[n-2]为数组倒数第二个元素,此时i=n-i,a[i]即a[n-1]对应数组最后一个元素,当比较完a[n-2]和a[n-1]并排序后,整个数组就完成了排列。
3.
代码
:
for(k=0;k<=n-2;k++)
{
index=k;
for(i=k+1;i<=n-1;i++)
{
if(a[i]<a[index])
{
index=i;
}
}
temp=a[k],a[k]=a[index],a[index]=temp;
}

热心网友 时间:2022-05-23 00:31

冒泡法,英文叫BubbleSort

热心网友 时间:2022-05-23 04:19

冒泡排序:
#include
<stdio.h>
#define
N
7
void
main()
{
char
ch[7];
for(i=0;i<N;i++)
{
scanf("%c",

热心网友 时间:2022-05-23 12:45

冒泡排序:
#include
<stdio.h>
#define
N
7
void
main()
{
char
ch[7];
for(i=0;i<N;i++)
{
scanf("%c",

热心网友 时间:2022-05-23 22:18

是冒泡排序吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? C语言编程 数组排序 C语言 数组排序 C语言方面的。编写函数void sort(int b[],int n)实现将数组从小到大的顺序进行排序; 用C语言编译程序:数组的排序与查找 编写C语言程序,把一个数组按从小到大的次序排列起来 C语言新手,关于通过函数SORT实现数组元素的升序排列,不会这道题,想死啊~ 编写函数,使用选择排序法对数组进行排序(用C语言) 微信聊天怎么at c语言编写一个函数sort按照学生编号由小到大的顺序排列二维数组,两门课程的成? C语言编程。函数Sort()用于对参数整数数组array的元素进行由小到大的选择排序 C语言:用选择排序法对一个数组里的数进行排序,从小到大,要求选出小的... c语言 ,编写一个函数input(),sort(),实现数组的输入,排序。 C语言:以下程序中函数sort的功能是对a数组中的数据进行由大到小的排 ... C语言编程创建自定义函数sort(),sort函数中实现选择法升序排序,主函数... 求C语言编程编写函数sort:对数组a中的数进行从小到大排序 车险实名制后提交车主和保险人亲展关系就可以交费吗? C语言程序题:写一函数sort(int a,int n)实现对数组a的排序,求各位大佬相助!! 四月一号汽车保险实名制是真的吗?也就是说抵押车不能买了。求答 c语言运用sort 排序函数,需要的头文件是什么? 车险实名制跟是不是本人银行卡付款有什么关系 如何在微信上艾特所有人? 那个网站有小学音乐课件啊? 请问哪里有免费的小学音乐教学课件下载?给我地址好吗?谢谢了,急用 ppt里的音乐怎么下载,要舒缓的音乐。 那里可以下载到做好的PowerPoint音乐呢 ? 幼儿园音乐星球课件在哪里下 求高手帮我制作音乐PPT相册,主题是关于毕业的。模板就行。急! 做物业管理,小区里的苍蝇、蚊子、蟑螂用什么药品消杀比较好, 物业公司选什么蟑螂药来灭蟑螂 详细&#xFFFD;0&#xFFFD;3 如何快速有效的杀蟑螂 如何彻底清除蟑螂 消灭蟑螂的方法? 怎么消灭家里的蟑螂,出差几个月,回来发现蟑螂特别多。 物业公司为写字楼灭杀苍蝇蚊虫蟑螂一般用什么药品 快速杀死蟑螂的方法都有哪些? 为什么macd金叉的同时kdj却是死叉? MACD与KDJ如何判断高点.低点.金叉与死叉 MACD指标详解,什么是MACD背离,MACD金叉死叉 在股票上,MACD和KDJ都有金叉和死叉的说法,那么哪个更准确一些呢? MACD顶背离,KDJ高位死叉 求此选股公式