Java实现字符串数组和字符串排序

2023-05-16

在Java环境下,对字符串数组或者对字符串排序都是一件很容易的事情,只要调用java.util包下的Arrays类的sort方法即可对其排序。

有没有想过,我们自己也可以利用排序算法编写一个属于自己的字符串数组和字符串排序,我就是这么做的,我利用了快速排序的思想:

* 一趟快速排序是:
 *1,随机产生一数列,选取第一个数(这里也可选其他的数)作为比较的基石,假设这个数为X,这样X=A[0];设两个变量i=0,j=n-1;n是这个数列的长度
 *2,从前面开始找,找到第一个比A[0]大的数,找到了就与X交换
 *3,从后面开始找,找到第一个比A[0]小的数,找到了就与X交换
 *4,重复步骤2,3,直到i=j;
 *这样一趟快速排序就完成了;第一趟完成之后,X左边的数就全部小于X了,X右边的数九全部大于X,然后采用递归方式对X左边的数和X右边的数进行快速排序。 


字符串数排序代码如下:

package com.org.tool;

/** 
 * 字符串数组排序,利用快排的思想
 * @author xiaobangsky
 * time:2014-10-13
 *
 */
public class P4_8 {

	public static void quickSort(String[] pData,int left,int right)   
    {   
      int i,j;   
      String first,temp;   
      i = left;   
      j = right;   
      first = pData[left]; //这里选其他的数也行,不过一般选第一个  
      //一趟快速排序   
      while(true)   
      {   
      //从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数  
          while((++i)<right-1 && pData[i].compareTo(first)<0);   
          //从最后一个数开始找第一个小于中枢pData[left]的数   
          while((--j)>left && pData[j].compareTo(first)>0);   
          if(i>=j)   
              break;   
          //交换两边找到的数   
          temp = pData[i];   
          pData[i] = pData[j];   
          pData[j] = temp;   
   
      }   
      //交换中枢   
      pData[left] = pData[j];   
      pData[j] = first;   
      //递归快排中枢左边的数据   
      if(left<j)   
        quickSort(pData,left,j);   
      //递归快排中枢右边的数据   
      if(right>i)   
        quickSort(pData,i,right);   
    }   
	
	public static void main(String[] args) {
		String[] arr = new String[]{"one","onad","Dream","Beijing","Olympic"};
		quickSort(arr, 0, 5);
		for(String s:arr){
			System.out.print(s+" ");
		}
	}
}
字符串排序代码如下:
package com.org.tool;

/**
 * 字符排序,快排思想
 * @author xiaobangsky
 * time:2014-10-13
 */
public class P4_9 {
	
	public static void quickSort(char[] pData,int left,int right)   
    {   
      int first,i,j;   
      char temp;   
      i = left;   
      j = right;   
      first = pData[left]; //这里选其他的数也行,不过一般选第一个  
      //一趟快速排序   
      while(true)   
      {   
      //从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数  
          while((++i)<right-1 && pData[i] < first);   
          //从最后一个数开始找第一个小于中枢pData[left]的数   
          while((--j)>left && pData[j]>first);   
          if(i>=j)   
              break;   
          //交换两边找到的数   
          temp = pData[i];   
          pData[i] = pData[j];   
          pData[j] = temp;   
   
      }   
      //交换中枢   
      pData[left] = pData[j];   
      pData[j] = (char) first;   
      //递归快排中枢左边的数据   
      if(left<j)   
        quickSort(pData,left,j);   
      //递归快排中枢右边的数据   
      if(right>i)   
        quickSort(pData,i,right);   
    }   
	
	public static void main(String[] args) {
		char[] arr = "xarvfwegfe".toCharArray();
		quickSort(arr, 0, 10);
		for(char s:arr){
			System.out.print(s);
		}
	}
}
这样就完成了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实现字符串数组和字符串排序 的相关文章

  • Mysql如何高效的迁移到Redis

    1 需求 前端任务需要将几百万数据某几个关键字段组合成字符串从mysql导入redis 列表中 xff0c 发现网上大都数linux 以及 redis为key value形式的hash值 xff0c 而我需要的是字符串列表 xff0c 找不
  • 数据库

    set password for root 64 localhost 61 password 39 123456 39 grant all privileges on to root 64 39 39 identified by 34 12
  • git ssh 使用

    git config global user name 34 xxxxx 34 git config global user emall 34 xxxxx 64 qq net 34 ssh keygen t rsa C 34 xxxxx 6
  • MapReduce遇到java.lang.UnsatisfiedLinkError: boolean org.apache.hadoop.io.nativeio.NativeIO$Windows.ac

    解决方法 把Hadoop的bin目录下的文件复制到windows system32下 1 系统环境变量配置HADOOP HOME xff0c 并且添加进path 变量里 xff1b 2 HADOOP HOME bin 里是否有hadoop
  • 遍历JSONObject、JSONArray (适用任意复杂结构类型)

    多数时候 xff0c 我们可能只需要获取JSONObject里的某个键值对 xff0c 但有时候 xff0c 我们需要遍历整个JSONObject对象 本文用的是alibaba的fastjson xff0c 如果没有用过fastjson x
  • 【gRPC】自签CA、服务端和客户端双向认证

    前言 在上一篇文章Protobuf中间文件介绍 使用 Go新版本TLS证书认证问题中 xff0c 我们简单使用了grpc的单项认证 xff0c 客户端和服务端使用的证书都是由ca证书签发给服务端的 xff0c 在本文中 xff0c 我们进行
  • git 远程代码回滚master

    一 本地回滚 git reset 回退内容到上一个版本 就像现在的自己为成年人 xff0c 想要回退到童年 xff0c 直接用gitreset命令 xff0c 直接回退到小时候 git reset hard 22f8aae 22f8aae
  • Springboot 解决跨域的四种姿势

    实现 WebMvcConfigurer addCorsMappings 的方法 import org springframework context annotation Configuration import org springfra
  • mysql按某一字段分组取最大(小)值所在行的数据

    表结构脚本 xff1a CREATE TABLE 96 student grade 96 96 id 96 int 11 NOT NULL AUTO INCREMENT 96 name 96 varchar 64 DEFAULT NULL
  • 打包jar读不到.jks文件解决方法

    Maven 仓库获取地址 xff1a http mvnrepository com artifact commons io commons io lt https mvnrepository com artifact commons io
  • 通过Nginx反向代理实现IP访问分流

    根据特定IP来实现分流 将IP地址的最后一段最后一位为0或2或6的转发至test 01 com来执行 xff0c 否则转发至test 02 com来执行 upstream test 01 com server 192 168 1 100 8
  • nginx map 妙用

    worker processes auto stream map remote addr dynamic backend 02468 34 test1 34 ip最后一位是偶数 13579 34 test2 34 ip最后一位是奇数 一个正
  • shell脚本通过mysql获取数据

    数据库查询结果 xff0c 结果为每行从左到右每个单元格为一行 xff08 首行为SQL查询结果的列名 xff09 数组默认分割符号是空格 xff0c 当查询结果中包含空格字符时 xff0c 会导致一个字段被分割开 xff0c 例如 xff
  • Activemq Artemis jmx使用

    1 修改 目录 mybroker etc broker xml 修改 lt name gt myartemis lt name gt 后面会用 加入2行 lt jmx management enabled gt true lt jmx ma
  • SpringBoot设置mysql的ssl连接

    因工作需要 xff0c mysql连接需要开启ssl认证 xff0c 本文主要讲述客户端如何配置ssl连接 SpringBoot xff1a 2 0 5 RELEASEmysql connector java xff1a 8 0 18mys
  • ThinkPHP URL路由解析

    ThinkPHP是国内非常火的一个轻量级框架 xff0c 采用MVC模式 xff0c 结构写的非常好 xff0c 今天 大象 带大家走一下ThinkPHP框架系统运行流程 xff0c 我将跟随ThinkPHP的执行进行代码讲解 xff0c
  • 【gRPC】双向认证下grpc-gateway原理及简单使用

    文章目录 前言一 grpc gateway原理二 环境准备三 服务端改造四 总结 前言 在上一篇文章自签CA 服务端和客户端双向认证中 xff0c 我们了解了双向认证并进行了实践 xff0c 本篇文章将基于双向认证 xff0c 使用gRPC
  • php 装饰模式

    lt php abstract class component public abstract function operation class concretecomponent extends component public func
  • Beyond Compare在Mac OS系统下永久试用

    亲测可用 一 原理 Beyond Compare每次启动后会先检查注册信息 xff0c 试用期到期后就不能继续使用 解决方法是在启动前 xff0c 先删除注册信息 xff0c 然后再启动 xff0c 这样就可以永久免费试用了 二 下载 首先
  • RSA加密解密(PHP Demo)

    private key 61 39 BEGIN RSA PRIVATE KEY MIICXQIBAAKBgQDpoODVtnSztGyb p 43 g Ob36jb3jzWzS2qovOjpY rrTjwlVcQ pB2m1nZDQNpTF

随机推荐

  • 【Pandas】优化读取文件内存占用过大的问题

    编写于2022 11 6 1 内存占用计算 做了个小实验 xff0c 发现pandas读取文件时 xff0c 内存占用是真的高 xff1a span class token keyword import span sys span clas
  • springboot+chatgpt+chatUI Pro开发智能聊天工具

    应广大网友要求 xff0c 也为了节约大家的时间现为大家奉献上源码下载地址 xff1a https download csdn net download xiangyuanhong08 87708197源码下载后在IDEA导入项目后自己修改
  • dockerfile指令解析

    Dockerfile 是一个文本文件 xff0c 其内包含了一条条的指令 Instruction xff0c 用于构建镜像 指令集描述FROM指定基础镜像 xff0c 必须为第一个命令MAINTAINER维护者信息RUN构建镜像 docke
  • openEuler社区人才评定考试流程指引

    最近因为公司工作的需要参加考试了openEuler社区人才评定考试 xff0c 本次考试题型主要包括单选 多选 判断三类题型 考试内容基本都是操作系统使用相关的内容 考试需要注意事项 xff1a 1 考试为线上答题考试 xff0c 需开启摄
  • spire.doc 让java操作word文档更简单优雅

    Spire Doc for Java 是一款专业的 Java Word 组件 xff0c 开发人员使用它可以轻松地将 Word 文档创建 读取 编辑 转换和打印等功能集成到自己的 Java 应用程序中 作为一款完全独立的组件 xff0c S
  • jodconverter 2.2.2 +openoffice4.0 doc转换成pdf

    一 环境 linux下安装openoffice 1 首先先下载好需要的rpm包 xff1a Apache OpenOffice 4 0 0 Linux x86 64 install rpm zh CN tar gz 或直接命令下载 xff1
  • JAVA和PHP版CAS客户端集成

    一 背景 随着公司的不断的发展壮大和公司信息的建设逐步完善 xff0c 公司内部系统也在不断的增加 xff0c 为避免公司员工因系统过多造成账号密码混乱或忘记密码情况 公司决定将公司内部系统进行统一登录管理 通过CAS实现公司内部业务系统
  • 【gRPC】批量操作、服务端、客户端、双向流介绍及使用案例

    文章目录 前言服务端准备一 传统批量操作方式二 服务端流三 客户端流四 双向流 前言 在之前的文章中 xff0c 我们通常的做法都是客户端请求 服务端响应的模式 xff0c 客户端收集好所有的请求信息 xff0c 发送到服务端 xff0c
  • JAVA中文件下载和文件批量下载方法

    JAVA中的文件下载 文件下载 64 param request 64 param response 64 param filePath 文件路径 64 param filename 下载时文件名称 public static void d
  • JAVA中通过poi和pdfbox读取office文件和pdf文件内容

    最近做了个文档管理系统 xff0c 实现了公司文档资源在线化 因为涉及到全文搜索 xff0c 所以需要读取文件的内容创建全文索引 本人通过POI读取的office文件和pdfbox读取的pdf文件内容 xff0c 具体代码如下 xff1a
  • ubuntu 系统学习笔记

    ubuntu 12 04 3 server i386 iso LTS版 安装后无图形操作界面 xff0c 所以用apt get 安装图形操作相关软件 xff0c 过程如下 xff1a 一 先学习一下图形操作界面相关知识 xff1a 参考ht
  • WSL2安装及GPU的使用

    目录 WSL2WSL2安装运行Docker运行第一个Container WSL2 WSL Windows Subsystem for Linux 可以让开发者们在win10系统中运行Linux环境 xff0c 包括Linux命令行及应用等
  • C++ sort之Segmentation fault原因及其解决方法

    写sort的比较函数时要符合给定的要求 xff0c 否则可能会出现Segmentation fault异常 文档上对比较函数的要求 xff1a Binary function that accepts two elements in the
  • Ubuntu安装配置NX Server

    Ubuntu安装VNC xff0c VNC却无法随系统启动 xff0c 遂换成NX Server xff08 不是FreeNX xff09 一 下载 xff08 免费版本 xff0c 仅2个会话 xff09 下载URL xff1a http
  • Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义

    在Bash shell中经常会 见到一些比较特殊的符号 xff0c 本人现收集与此 xff0c 以供查阅 xff1a 位置参数 xff1a 详见ABS Advanced Bash Shell 中文翻译版103页第9章第一节内部变量 xff0
  • Python3.x No module named 'PIL'

    No module named 39 PIL 39 是因为需要pillow 打开命令行使用pip install Pillow命令 安装完成之后 xff0c 重新运行程序 xff0c 就没问题了
  • 基于Docker的数据库和文件同步的服务部署

    基于Docker的数据库和文件同步的服务部署 目录 基于Docker的数据库和文件同步的服务部署功能需求描述准备同步方案一 数据库同步1 如何同步 2 主从数据库功能划分 二 文件同步方案一 xff08 rsyncd方式 建议 xff09
  • vs2022文件自动保存为utf-8-bom格式方法

    使用 EditorConfig 可以让VS保存的文件默认编码为UTF 8 bom格式 更多信息查看微软文档 root span class token operator 61 span span class token boolean tr
  • 【gRPC】gRPC中拦截器的介绍及使用

    文章目录 前言一 服务端拦截器1 一元拦截器 xff1a UnaryInterceptor2 流式拦截器 xff1a StreamInterceptor3 实现服务端拦截器 一 客户端拦截器1 一元拦截器 xff1a WithUnaryIn
  • Java实现字符串数组和字符串排序

    在Java环境下 xff0c 对字符串数组或者对字符串排序都是一件很容易的事情 xff0c 只要调用java util包下的Arrays类的sort方法即可对其排序 有没有想过 xff0c 我们自己也可以利用排序算法编写一个属于自己的字符串