选择排序

在数组中随便找个数认为他最大,用这个数和数组中其他数比较

比这个数大就让最大的数等于这个数

void SelectSort(int* arr,int size)
{
    int i,j;
    int max = 0;
    //比较多少次 
    for(i=0;i<size-1;i++)
    {
        max = 0;
        //比较多少个元素 
        for(j=1;j<size-i;j++)
        {
            if(arr[j] > arr[max])        
            {
                max = j;
            }
        }
        //最大元素的数组下标不能是当前比较的最后一个
        //因为下面这种交换要去两个变量有不同的地址空间
        //可以用中间变量代替这种方式,就没有必要if判断了 
        if(max != size-1-i)
        {
            arr[max] = arr[max] + arr[size-1-i];
            arr[size-1-i] = arr[max]-arr[size-1-i];
            arr[max] = arr[max]-arr[size-1-i];
        }
    }
}

 

posted @ 2018-05-29 09:15  TheQi  阅读(81)  评论(0编辑  收藏  举报