本文总结了数组排序的四种方法,提供给大家使用。制作不易,给个高分,谢谢。
选择排序
冒泡排序(小学生排序)
sort排序
交换排序
我们先来看第一种方法:选择排序。
这种排序的主要思路就是将第一小的元素找出来,放在第一位(也就是第i位),再将第二小的元素找出来,放在第二位……以此类推。这个过程需要用到打擂法,而且要用双重循环。
#includeusing namespace std;
int main()
{
int a[10000],n,shu,js;
cin>>n;
for(int i=1;i>a[i];
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)//从第i+1个数开始寻找,因为前面已经找过并排好了
{
if(a[j]<a[i])
{
js=j;
}
shu=a[i];
a[i]=a[js];
a[js]=shu;
}
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}我们在来看第二种方法:冒泡排序。
这种方法也叫小学生排序。
这种排序的思想就是从第一个数开始比较相邻数大小,如果第一个数大于第二个数,就将其互相交换。同样要用到双重循环。
#includeusing namespace std;
int main()
{
int a[10000],n,shu,js;
cin>>n;
for(int i=1;i>a[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;ja[j+1])
{
shu=a[j];
a[j]=a[j+1];
a[j+1]=shu;
}
}
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}第三种排序就是调用sort函数排序,使用方法如下:
sort(数组的开始地址(数组名),数组名+数组的结束地址+1);
一般数组的开始地址就是数组的名字,结束地址就是输入的数组元素的数量(在此题中为n)
这种方法也是最简单、最快捷的。
#includeusing namespace std;
int main()
{
int a[10000],n;
cin>>n;
for(int i=1;i>a[i];
}
sort(a,a+n+1);
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}第四种排序是我自己写的,我给它取名叫做交换排序,因为其中会交换数据,但不是像冒泡排序(详情见上)那样进行挨个比较,而是一次将一个元素(a[i])与所有元素进行比较,如果小于某个元素,就将其与大的那个元素交换,每执行一次就能排好一个元素。
#includeusing namespace std;
int main()
{
int a[10000],n,shu;
cin>>n;
for(int i=1;i>a[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i]<a[j])
{
shu=a[i];
a[i]=a[j];
a[j]=shu;
}
}
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}以上是我总结的四种数组排序方法,希望对大家有用,制作不易,给个高分,谢谢。
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复