/*******************************************************************************
* @version $v1.0$
* @date $6.9.2012$
* @author $Alfred$
* @brief two versions of choose sort include non-recursion
and recursion
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#define NUM 10
typedef enum chooseVersion {non_recursion, recursion} chooseVersion;
int main(void)
{
int a[NUM] = {12,23,7,0,123,7,0,9,34,-1};
int i;
chooseVersion chooseID;
void chooseSort( int *arr, int num,chooseVersion ID);
printf("pls choose version(0 is non-recursion or 1 is recursion)\n");
scanf("%d",&chooseID);
chooseSort( a, sizeof(a)/sizeof(a[0]),chooseID);
for(i = 0; i < NUM; i++)
{
printf("%d ",a[i]);
}
}
void chooseSort( int *arr, int num, chooseVersion ID)
{
int i,j, index,temp;
if(ID == non_recursion)
{
for( i = 0; i < num-1; i++)
{
index = i;
for( j = i+1; j < num; j++)
{
if(arr[j] < arr[index])
{
index = j;
}
}
if( index != i)
{
temp = arr[i];
arr[i] =arr[index];
arr[index] = temp;
}
}
printf("non_recursion is called\n");
}
else
{
if(num == 1) return;
else
{
index = num - 1;
for( i = 0; i < num-1; i++)
{
if(arr[index] < arr[i])
index = i;
}
if( index != num - 1)
{
temp = arr[num -1];
arr[num - 1] = arr[index];
arr[index] = temp;
}
chooseSort(arr, num - 1, ID);
}
}
}
choose sort
最新推荐文章于 2023-07-07 10:18:04 发布