递归实现选择排序。
代码如下:
//冒泡排序的优化方法,冒泡排序的时间复杂度为N*N,经过优化的算法的时间复杂度为N*N/2
//并采用递归算法
//算法的思想是每次将数组中最小的数放到第一个位置,然后再排序剩下的数组
#include <stdio.h>
#include <stdlib.h>
void recursion_sort(int array[],int length); //递归排序,从小到大排序
int main()
{
int a[] = {4,6,1,2,9};
int i = 0;
//printf("%d\n",sizeof(a));
for(i=0; i<sizeof(a)/(sizeof(int)); i++) //sizeof(a)/(sizeof(int))为数组长度
{
printf("%d ",a[i]);
}
printf("\n");
recursion_sort(a,sizeof(a)/(sizeof(int)));
for(i=0; i<sizeof(a)/(sizeof(int)); i++)
{
printf("%d ",a[i]);
}
return 0;
}
void recursion_sort(int array[],int length)
{
if(NULL == array) //判断数组是否为空
{
return;
}//if
else
{
int *p = array;
//int length = sizeof(p)/(sizeof(int)); //数组长度
if(1==length) //length==1表示排序已经完成
{
return;
}
int i = 0;
int temp = 0;
for(i=0; i<length; i++) //将最小数放到最前面
{
if(*p>*(p+i))
{
temp = *p;
*p = *(p+i);
*(p+i) = temp;
}//if
}//for
//递归排序剩下的数组
p++;
length--;
recursion_sort(p,length);
}//else
}//recursion_sort