`
chriszeng87
  • 浏览: 738820 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数组乱序(时间复杂度O(n))

J# 
阅读更多
主要思想是从最后一个数到第二个数依次遍历,每次产生一个小于当前数的随机数k,再将list[k]和当前数交换

import java.util.Random;

public class Shuffle {
	
	static void shuffle(int[] list) {
		Random r= new Random();
		for(int i= list.length-1; i>1; i--) {
			int j = r.nextInt(i);
			int temp = list[i];
			list[i] = list[j];
			list[j] = temp;
		}
		for(int i=0; i<list.length; i++)
			System.out.print(list[i]+"  ");
		
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] list = {1,2,3,4,5,6,7,8,9,10};
		shuffle(list);
	}

}

分享到:
评论

相关推荐

    js代码-(算法)(数组)数组乱序,洗牌

    对于非常大的数组,Fisher-Yates算法可能会有性能问题,因为它是O(n)时间复杂度。但在JavaScript中,由于其动态类型和垃圾回收机制,即使处理较大的数组,通常也能接受。 四、main.js中的实现 在`main.js`文件中,...

    有赞2019校招前端笔试.docx

    这个问题可以使用算法的基本性质解决,归并排序的时间复杂度是 O(n log n),插入排序的时间复杂度是 O(n^2),堆排序的时间复杂度是 O(n log n),快速排序的时间复杂度是 O(n log n)。 第十个问题讨论了 JavaScript ...

    百度java面试查找算法代码

    排序后的时间复杂度为O(n log n),排序后的二分查找时间复杂度为O(log n),总时间复杂度为O(n log n),空间复杂度为O(n)(考虑了排序可能需要额外的空间)。这种方法虽然比顺序查找更快,但在不允许可变数据结构或...

    算法实验(快速排序,归并排序,回溯算法,N后问题等。)

    快速排序的平均时间复杂度为O(n log n),但在最坏的情况下(输入数组已排序或逆序)时间复杂度会退化到O(n^2)。 归并排序也是一种基于分治策略的排序算法。它将大数组分割成两个小数组,分别进行排序,然后将排序后...

    xc.rar_排序比较

    对于小规模或部分有序的数据,插入排序表现良好,但全乱序的大规模数据会很慢,时间复杂度也是O(n^2)。 4. **快速排序**:由C.A.R. Hoare提出的快速排序使用分治策略,选取一个“基准”值,将数组分为小于和大于...

    深入第K大数问题以及算法概要的详解

    解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k)。 解法2: 利用选择排序或交互排序,K次选择后即可得到第k大的数。总的时间复杂度为O(n*k) 解法3: 利用快速...

    内部排序算法比较 课程设计

    6. **堆排序**:利用二叉堆的性质进行排序,能在O(n log n)的时间复杂度内完成排序,且空间复杂度为O(1),是一种高效的原地排序算法。 在课程设计中,程序需要模拟以上各种排序算法,并通过比较关键字的比较次数和...

    快速排序对数组排序,二分查找。

    这种算法在平均情况下的时间复杂度为O(n log n),在最坏情况下(即输入数组已经完全有序或完全逆序)时间复杂度为O(n^2),但这种情况在实际应用中很少出现。 快速排序的步骤大致如下: 1. 选取数组中的一个元素作为...

    热-基于java列车车厢重排问题-算法进阶

    哈希映射可以在常数时间内定位车厢,而优先队列可以自动保持车厢的最小顺序,从而降低时间复杂度至O(n log n)。 具体实现时,还需要考虑以下几点: - 车厢编号可能重复,需要处理重复的情况。 - 输入数据可能是乱序...

    【数据结构】内部排序的比较

    - **快速排序**:平均情况下时间复杂度为\(O(n \log n)\),但在最坏情况下(即输入数据完全有序或逆序)时间复杂度退化为\(O(n^2)\)。 - **希尔排序**:平均情况下时间复杂度介于\(O(n^{1.3})\)至\(O(n^{1.8})\)之间...

    算法导论第三版答案

    - **时间复杂度**:选择排序的时间复杂度为O(n^2),其中n为数组长度。这是因为它无论在最好、最坏还是平均情况下都需要进行n*(n-1)/2次比较。 - **空间复杂度**:选择排序的空间复杂度为O(1),因为它是原地排序,不...

    插入排序_初学着_C++_算法_

    插入排序在最好情况(输入数组已排序)下,时间复杂度为O(n),最坏情况(输入数组逆序)下,时间复杂度为O(n^2)。平均情况下,插入排序的时间复杂度也是O(n^2)。这表明插入排序对于大规模无序数据并不高效,但对于小...

    【保证工作用的上】趣味数据结构与算法

    - 数组与链表操作主要介绍了两种数据结构的增删查改操作及其时间复杂度。 - hash与tree涉及了哈希表和树形数据结构,它们在数据检索方面具有高效性。 - bitmap和bloomfilter是位操作和概率算法的示例,它们用于处理...

    求出乱序中最小k的位置-java

    快速排序算法,时间复杂度o(nlogn),但是不稳定最坏的时候能达到O(n^2) 题目:找出乱序中最小k的位置 如何从N个乱序数据中,快速地找出第K小的数? 有数据 2,6,3,5,7,9,找出最小k的位置,k为用户输入(不能超过数组...

    数据结构排序技术综合应用

    快速排序在平均情况下的时间复杂度为O(n log n),但在最坏情况下(即输入数组已经排序或逆序)会退化为O(n^2)。 归并排序也是一种基于分治策略的排序算法,它将数组分成两个子数组,分别排序,然后合并这两个已排序...

    归并排序 归并排序示例

    这种排序方法不仅稳定(即相同元素的原有顺序不会被改变),而且在最坏的情况下时间复杂度为O(n log n),这使得它在实际应用中非常受欢迎。 #### 二、归并排序原理 归并排序的基本步骤如下: 1. **分解**:如果...

    (完整word版)2017年考研计算机统考408真题.doc

    根据代码,可以看到函数`func`会在`sum`达到`n`之前累加`i`,因此它的运行时间与`n`成正比,时间复杂度为O(n)。 2. 栈的性质:题目2考察栈的基本特性。栈是一种后进先出(LIFO)的数据结构,用于递归、函数调用等...

    如何优化C语言代码(程序员必读)

    - **二分查找法**:对于已排序的数组,二分查找的时间复杂度为O(log n),远优于顺序查找的O(n)。 - **乱序查找法**:这种查找方法实际上并不存在,可能是笔误或者是指在非有序数据中的查找,此时也可以考虑哈希表...

    哈希表类_汇编版(HashMap_ASM) 2.7版-易语言

    通过遍历序号取键值,性能较低,单次取值时间复杂度: O(n),非必要不建议使用)  8) 说明 枚举键值还是乱序枚举,因为即便是有序模式xx的储存依然是无序的.可使用 取所有键() 取所有值() 存到数组来遍历. 2.6版(2020.3....

    插入法排序

    插入法排序的时间复杂度在最坏情况下是O(n^2),比如当数组完全逆序时;在最好情况下是O(n),即数组已经排序。平均情况下的时间复杂度是O(n^2)。虽然插入法排序在大数据集上效率不如快速排序、归并排序等高级算法,但...

Global site tag (gtag.js) - Google Analytics