时间: o(n) 空间 o(1): 没有recursion, 只有当前一层的call stack

sorting 如果是general sorting algo(1:不能对数组的性质加以限制) comparison based(2: sorting 只能通过两个数的比较来进行) , 最好的时间复杂度o(nlogn)

/*
* [,i) value 1
*  [i, j) value 2
*  (k,) value 3
*  the unknown places: [j, k]
* */
public class RainbowSort {public static void main(String[] args){int[] arr ={1,3,2,3,1,2} ;rainbowSort(arr);print(arr);}public static void rainbowSort(int[] arr){if (arr == null || arr.length ==0 ) return;/*i*                             j*                         k*  1    1   2   2    2    2   3   3** */int n = arr.length;int i = 0,j = 0, k = n-1;while (j<=k){if(arr[j]==1){swap(arr, i, j );i++;j++;} else if(arr[j]==2){j++;} else {swap(arr, j, k);k--;}}}public static void swap(int[] arr, int i, int j){int temp = arr[i] ;arr[i] = arr[j];arr[j] = temp;}public static void print(int[] arr){for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}

转载于:https://www.cnblogs.com/davidnyc/p/8454765.html

Rainbow Sort相关推荐

  1. Golang TDD实践报告:快速排序Quick Sort

    Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...

  2. js数组的排序 sort详解

    1.简单数组简单排序 <script type="text/javascript">var arrSimple=new Array(1,8,7,6);arrSimple ...

  3. PyTorch 笔记(08)— Tensor 比较运算(torch.gt、lt、ge、le、eq、ne、torch.topk、torch.sort、torch.max、torch.min)

    1. 常用函数 比较函数中有一些是逐元素比较,操作类似逐元素操作,还有一些类似归并操作,常用的比较函数如下表所示. 表中第一行的比较操作已经实现了运算符重载,因此可以使用 a>=b,a>b ...

  4. Python 精选笔试面试习题—sorted 与 sort 单例模式、统计字符个数Count、垃圾回收、lambda函数、静态方法、类方法、实例方法、分布式锁、

    1. 字典根据键从小到大排序? In[38]: dic = {"name": "Tom", "age": 30, "country ...

  5. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝

    1. 类继承 如下代码 class A(object):def show(self):print 'This is calss A'class B(A):def show(self):print 'T ...

  6. linux中sort命令实例,Linux中文本处理工具之sort命令详解

    前言 sort命令将每一行作为一个单位进行比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按一定的顺序进行输出,实际上,sort命令可以被认为是一个非常强大的数据治理工具,用来治 ...

  7. php localcompare,JS中使用sort结合localeCompare实现中文排序实例_javascript技巧

    说到表格排序,首先要说的就一定是数组的排序,因为数组排序是表格排序的基础. JavaScript为数组提供了sort()方法用于表格排序,默认情况下该方法会使Array中的数组按照ASCII码的顺序进 ...

  8. 排序 时间倒序_经典排序算法之冒泡排序(Bubble Sort)

    冒泡排序 ( Bubble Sort ) 冒泡排序,正如它的名字一样,未排序数组中的最大(小)值会依次往上浮.冒泡排序主要有两个基本步骤:相邻元素之间的比较 和 交换位置. 步骤分析: 令待排序序列为 ...

  9. 奶牛排序 cow sort 置换群

    链接:https://ac.nowcoder.com/acm/contest/924/H 来源:牛客网 题目描述 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便 ...

最新文章

  1. ASP.NET MVC的View是如何呈现出来的[实例篇]
  2. Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发
  3. Hystrix概述(二)
  4. 为什么对象字面量没有名字?
  5. MDK5.29,5.30,5.31,5.32,5.33和各种pack软件包镜像下载
  6. codematic2连接mysql失败_codematic2.rar
  7. windows ssh远程登录阿里云遇到permissions are too open的错误
  8. Github Actions 中 Service Container 的使用
  9. 基于Kubernetes的分布式压力测试方案
  10. aba会导致问题_ABA问题
  11. 汇编重要知识点:地址编号和数据编号
  12. php钩子配置,thinkphp 行为扩展 钩子与插件的实现
  13. SQLite数据库的CRUD操作
  14. 华为vrrp默认优先级_华为vrrp配置实例
  15. 双线虚拟主机服务器,国内双线虚拟主机是什么
  16. 杜撰的柏拉图(转自李止介的个人空间)
  17. 纪念短暂而美好的恋情:愿得一人心 白首不相离
  18. Factor Graphs and GTSAM
  19. 50欧姆线设计 高频pcb_高频PCB设计:射频电路的布局的走线
  20. Jquery 中 ajaxSubmit使用讲解

热门文章

  1. PO价格追溯功能研究及测试
  2. 【linux】循序渐进学运维-基础篇-分区命令fdisk
  3. python自带idle_如何使用python自带IDLE
  4. 06-mysql自定义函数
  5. C++:编译银行管理系统(vector)
  6. 微信小程序之canvas画图
  7. Word中添加中文伪代码
  8. matlab三轴陀螺标定,三浮陀螺仪漂移模型的建立及MATLAB实现
  9. 北风网web开发资深讲师李炎恢出品--ASP系列课程从入门到精通
  10. 1-2路由器基本配置命令