题解 | #排序#

排序

http://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 将给定数组排序
 * @param arr int整型一维数组 待排序的数组
 * @param arrLen int arr数组长度
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
void swap(int *a, int *b)
{
    if(a==b)
        return;
    *a = *a^*b;
    *b = *a^*b;
    *a = *a^*b;
}
void quicksort(int *nums,int low,int high)
{
    int left;
    int right;
    int mid;
    if(low >= high)
        return;
    mid = nums[low];
    left = low;
    right = high;
    while(left < right)
    {
        while(left<right && mid <= nums[right])
            right--;
        while(left<right && mid >= nums[left])
            left ++;
        if(left == right)
            break;
        swap(&nums[left],&nums[right]);
    }
    swap(&nums[low],&nums[left]);
    quicksort(nums,low,left-1);
    quicksort(nums,left+1,high);
}

int* MySort(int* arr, int arrLen, int* returnSize ) {
    // write code here
    *returnSize = arrLen;
    if(arrLen <=1)
        return arr;
    quicksort(arr,0,arrLen-1);

    return arr;
}

快速排序解决

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务