Leecode-----排序算法问题

125 阅读1分钟

75.颜色分类

本文已参与[新人创作礼]活动,一起开启掘金创作之路

leetcode-cn.com/problems/so…icon-default.png?t=LA92https://leetcode-cn.com/problems/sort-colors/

采用冒泡排序,或者选择排序都可以,下面是排序链接详情请点击并查看

选择冒泡排序详解https://blog.csdn.net/weixin_58183566/article/details/121481840?utm_source=app&app_version=4.18.0&code=app_1562916241&uLinkId=usr1mkqgl919blenicon-default.png?t=LA92https://blog.csdn.net/weixin_58183566/article/details/121481840?utm_source=app&app_version=4.18.0&code=app_1562916241&uLinkId=usr1mkqgl919blen


/ 冒泡排序  
void sortColors(int* nums, int numsSize){
for(int j=0;j<numsSize;j++)
{
for(int i=0;i<numsSize-1;i++)
{
    if(nums[i]>nums[i+1])
    {
       int t=nums[i];
        nums[i]=nums[i+1];
        nums[i+1]=t;
    }

}
}return nums;
}

747.至少是其他数字两倍的最大数

leetcode-cn.com/problems/la…icon-default.png?t=LA92https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others/

****

找到第二大和第一大的数值然后比较,如果至少是两倍返回i否则返回-1;

int dominantIndex(int* nums, int numsSize){
if(numsSize==1)return 0;         //临界条件
int max=0,secmax=0,maxindex=0;
int i;
for(i=0;i<numsSize;i++)
{
    if(nums[i]>max)//更新最大
    {
        secmax=max;//原来最大的给了第二大
        maxindex=i;
        max=nums[i];
    }
    else if(nums[i]>secmax)      
    {
        secmax=nums[i];
    }
}if(max<2*secmax)    //如果至少是数组中每个其他数字的两倍
return-1;
return maxindex;
}