c语言怎样通过函数调用实现选择排序法

Python010

c语言怎样通过函数调用实现选择排序法,第1张

c语言通过函数调用实现选择排序法:

1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength)

2、写两个循环,在循环中应用简单选择插入排序:

int SelectSort(int * ListData,int ListLength)

{

int i , j

int length = ListLength

for(i=0i<=length-2i++)

{

int k = i

for(j=i+1j<=length-1j++)

{

if(ListData[k]>ListData[j])

{

k=j

}

}

if(k!=i)

{

int tmp = ListData[i]

ListData[i] = ListData[k]

ListData[k] = tmp

}

}

return 0

}

3、对编好的程序进行测试,得出测试结果:

int main()

{

int TestData[5] = {34,15,6,89,67}

int i = 0

printf("排序之前的结果\n")

for(i = 0i<5i++)

printf("|%d|",TestData[i])

int retData = SelectSort(TestData,5)

printf("排序之后的结果:\n")

for(i = 0i<5i++)

printf("|%d|",TestData[i])

return 0

}

4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。

#include<stdio.h>

void sortP(int p[])

{

int i,k

int *fir // 首位数的指针 

int *cur // 当前数的指针 

int *max // 最大数的指针 

int tmp // 交换数字的临时变量 

fir=p

for (i=0i<9i++) // 10个数字,从 0 -- 9 

{

max=fir // 最大值默认为第一个 

cur=fir+1 // 从第二个数字开始比较 

for (k=ik<10k++) // 一直到最后一个 

{

if(*cur>*max) max=cur // 把最大数值的指针保存到 max 指针 

cur++ // 下一个数字 

}

tmp=*fir // 把最大数字和首位的数字交换, 

*fir=*max

*max=tmp

fir++ // 比较下一个数字 

}

}

int main(void)

{

int a[10],*p

int i

p=a // 把指针指向数组首位 

printf("请输入10个整数: ")

for (i=0i<10i++)

{

scanf("%d",p)

p++

}

printf("\n\n排序后的10个数字是:\n")

p=a // 重新把指针指向数组首位 

sortP(p)

for (i=0i<10i++)

{

printf("%d  ",*p)

p++

}

printf("\n")  

return 0

}

#include<stdio.h>

void sort(float *a, int n)

{

int i,j,tmp

for(i=0 i<n-1 i++)

for(j=0 j<n-i-1 j++)

if(a[j]>a[j+1])

{

tmp = a[j]

a[j] = a[j+1]

a[j+1] = tmp

}

}

void main()

{

float a[5]

int i

printf("请输入五个数(逗号隔开):")

scanf("%f,%f,%f,%f,%f",&a[0],&a[1],&a[2],&a[3],&a[4])

sort(a,5)

printf("排序后为:")

for(i=0 i<5 i++)

printf("%.2f ",a[i])

printf("\n")

}

或者三个数的。

void sort(int *a, int *b, int *c)

{

int tmp

if(*a>*b){

tmp = *b

*b = *a

*a = tmp

}

if(*a>*c){

tmp = *c

*c = *a

*a = tmp

}

if(*b>*c){

tmp = *c

*c = *b

*b = tmp

}

return

}

扩展资料:

C语言中没有预置的sort函数。如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序。

一、可以编写自己的sort函数。

如下函数为将整型数组从小到大排序。void sort(int *a, int l)//a为数组地址,l为数组长度。

{  

int i, j 

int v   //排序主体

 

for(i = 0i <l - 1i ++)      

for(j = i+1j <lj ++)

     

{          

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 *))

参数:

1、待排序数组首地址。

2、数组中待排序元素数量。

3、各元素的占用空间大小4 指向函数的指针,用于确定排序的顺序,这个函数必须要自己写比较函数,即使要排序的元素是int,float一类的C语言基础类型。