c语言怎样通过函数调用实现选择排序法
c语言通过函数调用实现选择排序法:
1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength);
2、写两个循环,在循环中应用简单选择插入排序:
int SelectSort(int * ListData,int ListLength)
{
int i , j ;
int length = ListLength;
for(i=0;i<=length-2;i++)
{
int k = i;
for(j=i+1;j<=length-1;j++)
{
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 = 0;i<5;i++)
printf("|%d|",TestData[i]);
int retData = SelectSort(TestData,5);
printf("排序之后的结果:\n");
for(i = 0;i<5;i++)
printf("|%d|",TestData[i]);
return 0;
}
4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。
快速排序法c语言
快速排序是基于分治技术的重要排序算法,排序算法按照元素的值对它们进行划分。
划分是对给定数组中的元素的重新排序,使得A [ s ] A[s]A[s]左边的元素都小于等于A [ s ] A[s]A[s],而右边A [ s ] A[s]A[s]右边的元素都大于等于A [ s ] A[s]A[s]。
显然,建立了一个划分以后,A [ s ] A[s]A[s]已经位于它在有序数组中的最终结果,接下来我们可以继续对A [ s ] A[s]A[s]前和A [ s ]A[s]A[s]后的子数组分别进行排序(例如,使用同样的方法)。
注意,它和合并排序不同之处在:
在合并排序算法中,将问题划分为两个子问题,是很快的,算法的主要工作在于合并子问题的解;
在快速排序中,算法的主要工作在于划分阶段,而不需要再去合并子问题的解了。
C语言编写一个函数排序调用
冒泡法
void Bubble(int a[],int len)
{
int i,j,temp;
for(i = 0;i < len - 1;i++)
{
for(j = len - 1;j > i;j--)
if (a[j] < a[j - 1])
{
temp = a[j - 1];
a[j -1] = a[j];
a[j] = temp;
}
}
}