Java实现字符串数组和字符串排序
2014-10-13 14:51
344 查看
在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右边的数进行快速排序。
字符串数排序代码如下:
有没有想过,我们自己也可以利用排序算法编写一个属于自己的字符串数组和字符串排序,我就是这么做的,我利用了快速排序的思想:
* 一趟快速排序是:
*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); } } }这样就完成了。
相关文章推荐
- java String[]字符串数组自动排序的简单实现
- java字符串数组进行大小排序的简单实现
- java 将字符串数组实现排序
- 【Java】实现浮点数组的并集以及整型数组的交集和两个字符串数组的逆序排序
- 通过JNI实现C语言设置Java二维字符串数组并返回该字符串数组
- 小实例-实现对成绩总分由高到低的排序-Java中数组对象的排序
- java中排序一个字符串数组
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- 2752:字符串数组排序问题(java语言)
- java类实现数组的五种排序 冒泡排序、选择排序、插入排序、希尔排序、数组排序
- java中排序一个字符串数组
- C++ 用qsort()实现字符串数组元素排序
- Java实现数组排序总结篇(冒泡,选择,插入,希尔)
- JAVA实现字符串反转,借助字符数组实现
- Java使用选择排序法对数组排序实现代码
- 【java】数组/列表排序功能的两种实现
- java数组的排序 对象数组的排序 Comoarable接口实现 compareTo函数实现
- java数组的排序 对象数组的排序 Comoarable接口实现 compareTo函数实现
- 对数组进行排序,并记录下标值的Java实现
- 2011-12-04 15:36 JAVA实现位向量给无重复元素的整数数组排序