//java类
QuickSort
public class QuickSort {
//main方法(增加main方法是为了验证结果),main方法是java程序的入口方法,jvm在运行时首先查找main方法 public static void main(String[] args) {
//实例化类new一个对象 QuickSort str = new QuickSort();
//qwrplkjhgffdsazcbnm String s="qwrplkjhgffdsazcbnm";
//使用java封装好的方法把string转换成char数组 char[] cs1 = s.toCharArray();
//求字符数组的长度 int sl = cs1.length-1;
//使用new的str对象调用QuickSort类的排序方法并输出 System.out.println(str.SortString(cs1,0,sl));
}
//字符串排序方法 public String SortString(char [] cs,int low,int high){
//定义数组地位和高位角标变量 int l=low;
int h=high;
//将低位数组值赋给povit变量 char povit=cs[low];
//以下while实现一次排序,第一次后前面是比cs[low]小的字符,后面都是比cs[low]大的字符 while(l<h)
{
//从后往前查找如果高位数组值大于povit 则高位角标数减一 while(l<h&&cs[h]>=povit)
h--;
//如果高位数组值小于povit&脚标l小于h则将l和h的数组值交换 if(l<h){
char temp=cs[h];
cs[h]=cs[l];
cs[l]=temp;
l++;
}
//高位比较交换一次后,从前往后查询,如果低位数组值小于povit则l加一 while(l<h&&cs[l]<=povit)
l++;
//如果低位数组值大于povit&脚本l<h则将l和h的数值值交换 if(l<h){
char temp=cs[h];
cs[h]=cs[l];
cs[l]=temp;
h--;
}
}
//打印第一次排序交换的内容 System.out.print("l="+(l+1)+"h="+(h+1)+"povit="+povit+"\n");
//低位分组递归实现快速比较 if(l>low)SortString(cs,low,l-1);
//高位分组递归实现快速排序 if(h<high)SortString(cs,l+1,high);
//转换数据类型 String ss = "";
//将数组中的char字符拼接成字符串 for (char c : cs) {
// System.out.println(c); ss += c;
}
//返回字符串结果 return ss;
}
}