数据记录排序函数c语言 c语言数据排序程序( 二 )


(一)为什么要用c++标准库里的排序函数
Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!
(二)c++标准库里的排序函数的使用方法
I)Sort函数包含在头文件为#includealgorithm的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的 , 只要出现我们想要的结果即可!
II)Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址 。
(2)第二个是结束的地址(最后一位要排序的地址的下一地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序 。
Sort函数使用模板:
Sort(start,end,排序方法)
下面就具体使用sort()函数结合对数组里的十个数进行排序做一个说明!
例一:sort函数没有第三个参数 , 实现的是从小到大
#includeiostream
#includealgorithm
using namespace std;
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i=0;i10;i++)
couta[i]endl;
sort(a,a+11);
for(int i=0;i10;i++)
couta[i]endl;
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函数
关于C语言的数据排序!do……while这种循环的条件是:只要while后面的语句的值为true它就一直执行,直到值变为false才停止循环 。因此本题的while(nMAX)就表示只要n小于MAX该循环就一直进行,直到n大于等于MAX
你说的“直到nMAX”其实理解错误了,应该是“直到n=MAX”
C语言中使用函数实现:数据的输入,排序,输出和查找(要求折半查找递归实现) 在线等#include stdio.h
#define N 5/*数组的大小*/
void input(int *a,int n)/*输入函数*/
{
int *p=a;
while(pa+n)
scanf("%d",p++);
}
void output(int *a,int n)/*输出函数*/
{
int *p=a;
while(pa+n)
printf("%d ",*p++);
printf("\n");
}
void isort(int *s,int n)/*排序函数*/
{
int i,j;
int *p,temp;
for(i=0;in-1;i++)
{
p=s+i;
for(j=i;jn;j++)
if(*ps[j])
p=s+j;
temp=*p;
*p=s[i];
s[i]=temp;
}
}
int binsh(int *a, int c, int low, int high)/*递归法实现的二分查找法,元素存在于a中则返回元素的第一个位置 , 不存在则返回-1*/
{
int mid=(high+low)/2;
if(lowhigh)
return -1;
if(ca[mid])
return binsh(a,c,mid+1,high);
else if(ca[mid])
return binsh(a,c,low,mid-1);
else
return mid;
}
int main()
{
int a[N],n;
input(a,N);/*输入*/
isort(a,N);/*排序*/
output(a,N);/*输出*/
scanf("%d",n);/*要查找的元素*/
printf("%d\n",binsh(a,n,0,N-1));/*存在的话打印位置,不存在的话打印-1*/
return 0;
}
有用的话,请楼主及时采纳,谢谢
C语言中的排序函数是什么include cstdlib 或 #include stdlib.h
qsort(void* base, size_t num, size_t width, int(*)compare(const void* elem1, const void* elem2))

推荐阅读