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

所有排序

阅读更多
package corejava;

import java.util.LinkedHashSet;
import java.util.Set;

/**
 * (机能概要描述)
 * 
 * <pre>
 *  [变更履历]
 *  09.07.20.NICKLE NET 初版
 * </pre>
 * 
 * @author NICKLE)王
 */
public class Test {

	private static Set<String> set = new LinkedHashSet<String>();

	private static void perm(int[] arr, int k, int m) {
		if (k == m) {// 递归
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i <= m; i++)
				sb.append(arr[i]);
			set.add(sb.toString());
		} else {
			for (int i = k; i <= m; i++) {
				arr[k] = (arr[k] + arr[i]) - (arr[i] = arr[k]); // 交换arr[k] <->
				// arr[i]
				perm(arr, k + 1, m);
				arr[k] = (arr[k] + arr[i]) - (arr[i] = arr[k]); // 交换arr[k] <->
				// arr[i]
			}
		}
	}

	public static String[] getPerm(int[] arr, int k, int m) {
		perm(arr, k, m);
		return set.toArray(new String[set.size()]);
	}

	public static void main(String[] args) {
		int[] test = { 1, 2, 3 };
		String[] perms = getPerm(test, 0, test.length - 1);
		for (String s : perms)
			System.out.println(s);
	}
}
分享到:
评论

相关推荐

    数据结构实验中所有排序算法

    数据结构实验中所有排序算法详解 排序算法是数据结构中不可或缺的一部分,它们在计算机科学领域扮演着关键角色,用于组织和处理数据。本篇将深入探讨数据结构实验中常见的几种排序算法,包括插入排序、冒泡排序、...

    数据结构所有排序查找带图详细解释.7z

    在本资源中,"数据结构所有排序查找带图详细解释.7z" 提供了关于排序和查找算法的详细讲解,配以图表和注释,非常适合初学者学习。下面我们将深入探讨这些主题。 首先,我们来看排序。排序是指将一组无序的数据按照...

    Java所有排序算法大全

    选取一个基准值,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后对这两部分递归进行快速排序,平均时间复杂度为O(n log n),但在最坏情况下为O(n^2)。 `HeapAlgorithm.java`是堆排序的...

    打印字符串的所有排序

    简洁代码,c++ 语音打印出字符串的所有排序的可能。牛客网上的题目。

    大一所有排序.cpp

    大一所有排序.cpp

    所有排序方法.zip

    8. **桶排序**(BucketSort.java):桶排序是一种分布式排序算法,将元素分布到有限数量的桶里,每个桶再单独排序,最后合并所有桶的有序结果。适用于元素分布均匀的情况,时间复杂度可以达到线性O(n + k),k是桶的...

    所有排序的写法(Java).zip

    9. **桶式排序**(BucketSort.java):桶排序适合于数据分布均匀的情况,将数据分到若干个桶里,每个桶再分别排序,最后把所有桶中的数据合并。时间复杂度可以达到线性O(n + k),其中k是桶的数量。 10. **基数排序*...

    数据结构中的所有排序算法加报告

    在IT领域,排序算法是计算机科学中至关重要的一个部分,特别是在数据结构与算法设计中。本文将详尽探讨数据结构中的各种排序算法及其原理、性能分析,并附带一份详细的报告,帮助读者深入理解这些核心概念。 一、...

    c++所有排序算法的总结

    有10余种排序算法的代码和图解分析,同时还有之间的区别,其中涉及到一些基础的数据结构,树,图,二叉树,堆等.堆排序,快速排序,希尔排序,归并排序,插入排序,选择....

    c语言所有排序程序

    本文档是用c语言写的可成功执行的源代码,包括所有数据结构中的排序方法,包括快速排序、选择排序、希尔排序、插入排序等

    所有的排序算法及源代码

    这里我们关注的资源"所有的排序算法及源代码"提供了多种经典的排序算法实现,适合在Visual C++(VC)环境中运行。让我们深入探讨这些排序算法的基本原理、应用场景以及优缺点。 1. 冒泡排序:冒泡排序是最基础的...

    C++数据结构中的所有排序算法

    这里我们将深入探讨几种经典的排序算法,包括冒泡排序、选择排序以及快速排序,这些都是C++数据结构中不可或缺的知识点。 **1. 冒泡排序(Bubble Sort)** 冒泡排序是最基础的排序算法之一,它通过重复遍历数组,比较...

    基本的所有排序算法的实现

    一些对基本排序算法的实现,已经附上源码,都可以直接使用~

    Java算法集锦,所有排序算法

    9. **桶排序**(Bucket Sort):桶排序将元素分配到有限数量的桶里,每个桶再单独排序,最后合并所有桶的结果。适合均匀分布的输入,时间复杂度可达到线性O(n + k)。 10. **基数排序**(Radix Sort):基数排序按照...

    易语言柱状图排序演示源码

    资源介绍:。看了帝皇法老关于排序的,做了这个应该能加深对排序算法的记忆. 不要看代码代码写的乱会越看越乱。注:由于我对排序算法理解的...没有都所有排序都进行演示,也是我技术不够的原因。资源作者:。资源下载:。

    各种排序方法的实现与比较源码--C语言

    本文将深入探讨C语言中常见的六种排序算法:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序以及堆排序。每种排序算法都有其独特的实现方式和性能特点,适合不同的场景。 1. **起泡排序(Bubble Sort)*...

    C语言排序全集:归并排序;基数排序;快速排序;冒泡排序;选择排序;折半排序;希尔排序

    C语言所有排序大全,解决了您日常上课考试学习的需要,在这里每一个程序都没有错误,其中压缩包包括了归并排序;基数排序;快速排序;冒泡排序;选择排序;折半排序;希尔排序这些日常排序,因为是全集所以大家踊跃...

    内部排序实验报告

    整个程序由两大部分组成:主程序模块负责用户界面和命令处理,而可排序表单元模块则实现了所有排序算法的具体逻辑。 #### 详细设计 在详细设计阶段,明确了数据结构的选择和部分关键算法的实现细节。可排序表采用了...

    基于C++实现的七种排序算法源代码及性能评估报告,基于C++实现的冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、基数排序

    所有排序算法类都继承自基类 Sort,并实现基类的 Sort::apply 方法(传入一个待排序的数组指针和数组长度),该方法返回一个 SortResult 类。 当 Sort::apply 方法被调用时,立即实例化一个 SortResult 类,此时 ...

    排序算法汇总.pdf

    - **关键字比较**:几乎所有排序算法都需要进行关键字之间的比较,这是排序的基本操作之一。 - **记录移动**:除了关键字比较外,还需要移动记录来实现排序。对于顺序存储结构,通常直接移动记录;而对于链式存储...

Global site tag (gtag.js) - Google Analytics