【蓝桥杯】_06三部排序-阿里云开发者社区

开发者社区> 人工智能> 正文

【蓝桥杯】_06三部排序

简介: 【蓝桥杯】_06三部排序

img

package java2013B;

/**
 * @Author bennyrhys
 * @Date 2020-03-11 23:06
标题:三部排序

一般的排序有许多经典算法,如快速排序、希尔排序等。

但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。

比如,对一个整型数组中的数字进行分类排序:

使得负数都靠左端,正数都靠右端,0在中部。注意问题的特点是:负数区域和正数区域内并不要求有序。可以利用这个特点通过1次线性扫描就结束战斗!!

以下的程序实现了该目标。

static void sort(int[] x)
{
int p = 0;
int left = 0;
int right = x.length-1;

while(p<=right){
if(x[p]<0){
int t = x[left];
x[left] = x[p];
x[p] = t;
left++;
p++;
}
else if(x[p]>0){
int t = x[right];
x[right] = x[p];
x[p] = t;
right--;
}
else{
_________________________;  //代码填空位置
}
}
}

如果给定数组:
25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0
则排序后为:
-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25

请分析代码逻辑,并推测划线处的代码,通过网页提交
注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

 */
public class _06三部排序 {
    public static void main(String[] args) {
        int arr[] = {25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0};
        sort(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    static void sort(int[] x)
    {
        int p = 0;
        int left = 0;
        int right = x.length-1;

        while(p<=right){
            if(x[p]<0){
                int t = x[left];
                x[left] = x[p];
                x[p] = t;
                left++;
                p++;
            }
            else if(x[p]>0){
                int t = x[right];
                x[right] = x[p];
                x[p] = t;
                right--;
            }
            else{
                p++;  //代码填空位置
            }
        }
    }
}

文末福利

对了对了,文末发波福利

  1. 通过公众号提示的关键字可以领取竞赛资料。但是,有时候会失效,小伙伴可以在后台留言提醒我修复。
  2. 最后一波分享一些很有意义的开源干货

蓝桥杯必刷真题:https://github.com/bennyrhys/LanQiao
求职必备刷题官网:https://github.com/bennyrhys/interview
SpringBoot两小时快速入门,极客表白浪漫红包程序
https://github.com/bennyrhys/LuckyMoney-SpringBootProject
SpringBoot两小时快速入门,基因芯片个人信息程序
https://github.com/bennyrhys/Girl-SpringBootProject
SpringBoot之web进阶,人类基因芯片程序-提升篇
https://github.com/bennyrhys/GirlPlus-SpringBootProject

小伙伴的支持是我坚持的动力,动动小手,点点(关注、👍、在看)。

公众号二维码-让我遇见相似的灵魂.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章