#include?stdio.h
void?sort(int?a[],?int?n)?{//选择排序
int?i,j,k,t;
for(i?=?0;?i?n?-?1;?◆◆i)?{
k?=?i;
for(j?=?k?◆?1;?j?n;?◆◆j)?{
if(a[k]?a[j])?k?=?j;
}
if(k?!=?i)?{
t?=?a[i];
a[i]?=?a[k];
a[k]?=?t;
int?main()?{
int?i,n?=?sizeof(a)/sizeof(a[0]);
printf("排序前:\n");
for(i?=?0;?i?n;?◆◆i)
printf("%d?",a[i]);
printf("\n");
sort(a,n);
printf("排序后:\n");
return?0;
C语言中没有预置的sort函数.如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序.
第一段:可以编写自己的sort函数.
如下函数为将整型数组从小到大排序.
void?sort(int?*a,?int?l)//a为数组地址,l为数组长度.
{
int?i,?j;
int?v;
//排序主体
for(i?=?0;?i?l?-?1;?i?◆◆)
for(j?=?i◆1;?j?l;?j?◆◆)
if(a[i]?a[j])//如前面的比后面的大,则交换.
v?=?a[i];
a[i]?=?a[j];
a[j]?=?v;
}}
对于这样的自定义sort函数,可以按照定义的规范来调用.
第二段:C语言有自有的qsort函数.
功 能: 使用快速排序例程进行排序
头文件:stdlib.h
原型: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
参数:
①. 待排序数组首地址
这个函数必须要自己写比较函数,即使要排序的元素是int,float一类的C语言基础类型.
以下是qsort的一个例子:
#includestdio.h
#includestdlib.h
int?comp(const?void*a,const?void*b)//用来做比较的函数.
return?*(int*)a-*(int*)b;
int?main()
int?i;
qsort(a,n,sizeof(int),comp);//调用qsort排序
for(i=0;i10;i◆◆)//输出排序后的数组
printf("%d\t",array[i]);
扩展资料:
sort函数的用法(C◆◆排序库函数的调用)
对数组进行排序,在c◆◆中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了.
(一)为什么要用c◆◆标准库里的排序函数
(二)c◆◆标准库里的排序函数的使用方法
I)Sort函数包含在头文件为#includealgorithm的c◆◆标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!
II)Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址.
Sort函数使用模板:
Sort(start,end,排序方法)
下面就具体使用sort()函数结合对数组里的十个数进行排序做一个说明!
例一:sort函数没有第三个参数,实现的是从小到大
#includeiostream
#includealgorithm
using namespace std;
int main()
for(int i=0;i10;i◆◆)
couta[i]endl;
sort(a,a◆11);
return 0;
编译器
GCC,GNU组织开发的开源免费的编译器
MinGW,Windows操作系统下的GCC
Clang,开源的BSD协议的基于LLVM的编译器
Visual C◆◆?:: cl.exe,Microsoft VC◆◆自带的编译器
集成开发环境
CodeBlocks,开源免费的C/C◆◆ IDE
CodeLite,开源、跨平台的C/C◆◆集成开发环境
Orwell Dev-C◆◆,可移植的C/C◆◆IDE
C-Free
Light Table
Visual Studio系列
Hello World
参考资料:百度百科-sort函数
//选择排序算法,升序
void?sort(int?*arr,int?n)
int?i,j,k;
int?tmp;
for(i=0;in-1;i◆◆)
k=i;?//开始一趟选择排序,假定第i个元素是后面n-i◆1个未排序的元素中最小的元素
for(j=i◆1;jn;j◆◆)
if(arr[k]?arr[j])?//如果发现比当前最小元素还小的元素,则更新记录最小元素的下标k
k=j;
//如果最小元素的下标不是后面n-i◆1的未排序序列的第一个元素,则需要交换第i个元素和后面找到的最小元素的位置
if(k?!=?i)
tmp=arr[k];
arr[k]=arr[i];
arr[i]=tmp;
sort(a,10);
for(i=0;i10;i◆◆)
//运行结果
F:\c_worka.exe
void?sort(int*x,int?n)
int?i,j,t;
for(j=0;jn-i-1;j◆◆)
if(abs(*(x◆j))abs(*(x◆j◆1))){
t=*(x◆j);
*(x◆j)=*(x◆j◆1);
*(x◆j◆1)=t;
int?n,i;
scanf("%d",n);
for(i=0;in;i◆◆)
scanf("%d",x[i]);
sort(x,n);
printf("%d?",x[i]);
以上就是土嘎嘎小编为大家整理的sort函数c语言源码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!