`
roway
  • 浏览: 50690 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

用递归求出char[]中的最大值(延伸了冒泡算法)

 
阅读更多
public char max(char[] c,int num){
        //当前到那个元素的索引
        int number=num;
        //获取当前元素
        char max=c[number];
        //倒数第二数(这块要注意)
        if(number<c.length-1){
            if(max>c[number+1]){
                c[number+1]=max;
            }else{
                max=c[number+1];
            }
            return max(c,++number);
        }else{
            return max;
        }
        
    }
public void testMax(){
		char[] cArr={'2','a','6','e','?','3','f'};
		Calculator c=new Calculator();
		char result=c.max(cArr, 0);
		Assert.assertEquals('f', result);
	}

使用冒泡算法(有不对之处请指正!):
public static void main(String args[]) {
		char[] s = { '2', 'a', '6', 'e', '?', '3', 'f' };
		char temp;
		//从高端向前扫描实现排序
		/*for (int i = 0; i < s.length - 1; i++) {
			for (int j = s.length - 2; j >= i; j--) {
				if (s[j + 1] > s[j]) {
					temp = s[j + 1];
					s[j + 1] = s[j];
					s[j] = temp;
				}else{
					*//**
					 * 当某一次内循环操作中只有比较记录的操作而没有交换记录的操作时,
					 * 表示待排序列已经排好,算法可以考虑中止结束。
					 * *//*
					continue;
				}
				System.out.println(s);
			}
			System.out.println("_______________");
		}*/
		//从低端向后扫描实现排序
		for(int i = s.length -1; i > 0; i--){
			for(int j = 0; j < i; j++){
				if(s[j] > s[j + 1]){
					temp = s[j + 1];
					s[j + 1] = s[j];
					s[j] = temp;
				}else{
					continue;
				}
				System.out.println(s);
			}
			System.out.println("_______________");
		}		
	}
这样也可以实现
public static void main(String[] args) {
		char[] charArr = { '2', 'a', '6', 'e', '?', '3', 'f' };

		for (int i = 0; i < charArr.length - 1; i++) {
			for (int j = i + 1; j < charArr.length; j++) {
				char temp = charArr[i];
				if (temp < charArr[j]) {
					charArr[i] = charArr[j];
					charArr[j] = temp;
				}
				System.out.println(charArr);
			}
			System.out.println("___________________");
		}
		//System.out.println(charArr);
	}
分享到:
评论

相关推荐

    C语言常用算法集合.pdf

    本文档是一份关于C语言常用算法集合的资料,文档中包含了一些基础和高级算法的示例代码,涵盖了数值计算、字符串处理、数组搜索等多个领域。下面将详细介绍文档中的知识点。 1. 数值积分算法 文档开头展示了两种...

    java面试中的算法

    根据给定的信息,我们可以提取并总结出几个与Java面试中常见的算法相关的知识点: ### 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序...

    C语言经典算法大全.doc

    在C语言中,可以使用递归函数来实现这一算法。 ```c void hanoi(int n, char A, char B, char C) { // 递归调用 } ``` 2. **费式数列(Fibonacci Sequence)**:费式数列中的每个数是前两个数的和,通常表示为Fn=...

    C/C++经典算法详解

    1. **基本排序**:选择排序、插入排序、冒泡排序是基础排序算法,适用于小规模数据或部分有序数据。 2. **改进排序**:Shell排序、Shaker排序、Heap排序等提高排序效率的改进算法。 3. **高效排序**:快速排序、归并...

    经典算法(c语言),51个经典算法

    这段代码首先初始化数组`Fib`中的前两个值为0和1,然后通过循环计算出剩余的费式数列值,并打印出来。 #### 其他经典算法概述 除了以上介绍的河内之塔和费式数列之外,该文件还提到了其他多种经典算法,包括但不...

    ACM程序算法模板与经典算法大集合

    ##### 4.3、数塔最大值算法 数塔最大值问题是一个二维动态规划问题。 ##### 4.4、最小代价字母树 最小代价字母树问题可以通过构建一棵满足条件的树来求解。 ##### 4.5、最长公共字串LCS 最长公共子串是一个经典...

    数据结构习题答案(全部算法)---严蔚敏版.doc

    - 在文档中给出的算法中,利用了数学性质来减少递归调用的数量,从而降低时间复杂度。 - 时间复杂度为 O(m),这比传统的递归方法(时间复杂度为 O(k^m))和动态规划方法(时间复杂度为 O(m^2))都要高效。 **代码...

    java算法题 : 数组相关问题

    2. 最大子数组和:寻找数组中连续子数组的最大和,Kadane's算法可以在一次遍历中解决,时间复杂度为O(n)。 3. 翻转数组:给定一个数组,反转数组中的元素。可以通过两个指针从两端向中间遍历并交换元素实现。 4. ...

    数据结构习题答案(全部算法)---严蔚敏版1到5章

    * 2^i,且需确保不会超过整数的最大值。 **代码示例**(题目1.19): ```c Status algo119(int a[ARRSIZE]) { int last = 1; for (int i = 1; i ; i++) { a[i - 1] = last * 2 * i; if ((a[i - 1] / last) != ...

    算法:C语言实现

    根据提供的标题“算法:C语言实现”以及描述“算法:C语言实现,第五部分pdf”,我们可以推断出这本书主要介绍了如何使用C语言来实现各种算法。由于提供的部分内容并没有实际涉及具体的算法实现细节,我们将基于标题...

    常见算法、刷题资源、解析和代码示例的详细介绍

    - **记忆化递归**:使用一个缓存来保存已经计算过的值,避免重复计算。 - **自底向上**:从 F(0) 和 F(1) 开始,依次计算 F(2), F(3), ..., F(n)。 **背包问题** - **定义**:背包问题是组合优化中的经典问题之一...

    算法竞赛入门基础篇(个人整理)

    - 用于维护一个递增或递减的序列,常用于滑动窗口最大值/最小值等问题。 **4. 字符串匹配** - 包括KMP算法等高效匹配算法。 **5. Trie(字典树)** - 一种用于存储字符串集合的树形数据结构,特别适合于字符串...

    C语言练习题及答案+算法+数据结构

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结并生成一系列与C语言、算法和数据结构相关的知识点。接下来,将围绕这些主题展开详细介绍。 ### C语言基础 #### 1. C语言简介 - **定义**:C语言是一种...

    数据结构习题解答

    - 字符串处理:使用`char *`指针表示字符串。 - 数组操作:使用循环遍历数组,实现成绩的累加。 - 分支结构:通过`switch-case`语句实现根据不同学校名进行成绩分类。 - **1.19 序列求值**: 题目要求实现一个...

    C算法[第一卷 基础、数据结构、排序和搜索](第三版)2

    - **变量与数据类型**:了解基本数据类型如整型(int)、浮点型(float)、字符型(char)等,并学会定义和使用变量。 - **控制结构**:掌握条件语句(if-else)、循环语句(for、while、do-while)以及跳转语句...

    java各种排序

    Java中,你可以使用递归和额外的存储空间来实现归并排序。 最后是堆排序,它利用了堆这种数据结构。堆是一个近似完全二叉树的结构,满足堆的性质:父节点的键值总是大于或等于(小于或等于)任何一个子节点。Java的...

    ACM实用笔记,小白入.doc

    - **求数组最大值和最小值**:使用循环遍历数组。 ```java int a[] = {1, 32, 14, 15, 61, 7, 9, 12, 11, 18}; int max = a[0]; int min = a[0]; for (int i = 0; i ; i++) { if (max [i]) { max = a[i]; }...

    总结.docx 冒泡排序 选择排序 插入排序 归并排序 快速排序 结构体排序(冒泡排序+结构体的应用) 桶排序 二分查找 DFS

    它将数组分到有限数量的桶里,每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后把各个桶的数据串接起来。 #### 示例代码分析 **升序** ```cpp #include using namespace...

Global site tag (gtag.js) - Google Analytics