C 递归的选择排序

选择排序算法扫描一个数组并寻找数组中最小的元素,当找到最小的元素师,将它和数组中的第一个元素进行交换。接下来,从数组的第二个元素开始,这一过程在子数组上重复。每一轮的结果是有一个元素被放在了适当的位置上。这一排序需要的处理能力类似于冒泡排序。

void selectSort(int arr[],int low,int high)
{//low 是数组的开始下标 high是结束下标
    int i;
    int min = low;
    
    if(low < high){
        for(i = low + 1;i <= high;i++){
            if(arr[i] < arr[min]){
                min = i;
            }
        }
        if(min != low){//如果最小值是第一个就不互换
            swap(arr,low,min);
        }
        
        printArr(arr,high);

        selectSort(arr,low+1,high);
    }
}

void printArr(int arr[],int length)
{
    int i;
    for(i = 0; i <= length; i++){
        printf("%d ",arr[i]);
    }
    printf("\n");
}

void swap(int arr[], int first, int min)
{
    int temp;
    temp = arr[first];
    arr[first] = arr[min];
    arr[min] = temp;
}

 

posted @ 2014-03-15 10:42  ShowJoy  阅读(333)  评论(0编辑  收藏  举报