字符快速排序

import java.util.Scanner;

public class charSort{
	static void kuaiSu(char[] a,int left,int right)				//字符快速排序
	{
	    int f,l,r;
	    char t;

	    l=left;
	    r=right;
	    f=a[(left+right)/2];
		while(l<r)
		{
	        while(a[l]<f) ++l;
	        while(a[r]>f) --r;
	        if(l<=r)
	        {
				t=a[l];
		        a[l]=a[r];
	    	    a[r]=t;
	        	++l;
				--r;
			}
	    }
	    if(l==r)
			l++;
	    if(left<r)
		{
			kuaiSu(a,left,l-1);					//递归调用
		}

	    if(l<right)
		{
			kuaiSu(a,r+1,right);				//递归调用
		}
	}
	public static void main(String[] args)
	{
		char[] str=new char[80];
		int N;

		System.out.print("输入一个字符串:");
		Scanner input=new Scanner(System.in);
		str=input.next().toCharArray();							//输入字符串

		N=str.length;

		System.out.print("排序前:\n");
		System.out.println(str);				//输出

		kuaiSu(str,0,N-1);							//排序

		System.out.print("排序后:\n");
		System.out.print(str);				//输出

	}

}

时间: 2024-10-02 03:59:22

字符快速排序的相关文章

字符二分快速查找

import java.util.Scanner; /** * * @author luozhonghua * */ public class charSearchAndSort { static void kuaiSu(char[] a,int left,int right) //字符快速排序 { int f,l,r; char t; l=left; r=right; f=a[(left+right)/2]; while(l<r){ while(a[l]<f) ++l; while(a[r]

Java的语句类型、字符转换及字符串用法

If语句.switch语句.for循环语句: if... if...else... if...else if... if...else if...else... switch...case...default(可以省略)... (既然有了if, 为什么还要有switch) switch是对值的比较(数字, 字符串) 值0是什么类型, case后面的值就要是什么类型 switch(值0) { case 值1: 执行语句 break; case 值1: 执行语句 break; default: 执行

[POJ] #1003# 487-3279 : 桶排序/字典树(Trie树)/快速排序

一. 题目 487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 274040   Accepted: 48891 Description Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word or

1.1确定字符各异

题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符.保证字符串中的字符为ASCII字符.字符串的长度小于等于3000. 测试样例: "aeiou" 返回:True "BarackObama" 返回:False 解法 1)哈希法,首先char类型判断重复,用hash数组最方便,只需要256个bo

lintcode 中等题:sort letters by case字符大小写排序

题目 字符大小写排序 给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序. 您在真实的面试中是否遇到过这个题? Yes 样例 给出"abAcD",一个可能的答案为"acbAD" 注意 小写字母或者大写字母他们之间不一定要保持在原始字符串中的相对位置. 挑战 在原地扫描一遍完成 解题 这个题目很简单,前面刚做一个把大于某个数之和的排在后面,快速排序的思想 public class Solution { /** *@param chars: The le

微软算法100题88 将字符串中的字符&#39;*&#39;移到串的前部分

函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量.如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5.(要求使用尽量少的时间和辅助空间) 思路:类似于快速排序,用两个指针分别指向字符数组的左右边界,寻找左边第一个不为*的字符,寻找右边第一个*,然后交换字符,然后继续寻找和交换的过程,直到两个指针相交, 时间复杂度o(n), 空间复杂度o(1) 第一个写的程序有问题,没有考虑到保持

————————C语言中快速排序方法——————————————

在对浮点型排序是一定要用三木运算符(三目运算符内容下去自己看),因为如果也是用整形那样的减法的时候如果是两个十分相近的数字 可能返回一个小数(自己一会去试试),冉冉他cmp返回值是int(试试别的)因此就会将这个小数返回为0,系统认为其相等,失去了本来存在的大小关系.所以为了安全起见对浮点型进行快速排序的时候还是用三目运算符. ————————————1——————————————— 对int类型数组的排序 int a[100];//定义数组 int cmp (const void*a,cons

shell快速排序、去重文本内容

逛ChinaUnix论坛,常常可看到到日经帖,怎么快速排序一个文本内容,或者计算某行出现次数.这些问 题大部分都可以通过简单的sort.uniq命令来解决. 首先准备两个文本 cat file1: Boys in Company C       :HK     :192    :2192 Alien                   :HK     :119    :1982 The Hill                :KL     :63     :2972 Aliens      

go实现冒泡排序和快速排序

项目结构 冒泡排序算法,源文件bubblesort.go package bubblesort // 冒泡排序 func BubbleSort(values []int) { for i := 0; i < len(values) - 1; i ++ { flag := true for j := 0; j < len(values) - i - 1; i ++ { if values[j] > values[j + 1] { values[j], values[j + 1] = val