快速排序:顾名思义就是比较的快,在目前的排序中,真的算是比较的快了。这个算法,实现的话比较的简单,但是前面的创作算是比较的难。基本的思想就是直接将大的数移动到基本数的右边,小的数移动到基本数的左边。
具体的算法如下:
1.如果数组中仅有一个元素或者没有元素需要排序,则返回。
2.选择数组中的一个元素作为根源(array[low])。(我选的是第一个元素)。
3.把数组分为两个部分,第一个部分就是比根源值大的,另外一个是比根源值小的。
4.对两部分数组递归调用该算法。
具体实现代码如下:
public class QuickSort {
public static void sort(int []array,int low,int high){
int left=low;
int right=high;
int temp=array[low]; //存放根源节点
while(left<right){//一直循环到left碰到right就结束
while(left<right&&array[right]>=temp)
{
right--;
}
if(left<right)
{
array[left]=array[right];
left++;
}
while(left<right&&array[left]<=temp)
{
left++;
}
if(left<right)
{
array[right]=array[left];
right--;
}
}
array[left]=temp;//将根的值放到最中间
if(left-1>low)
{
sort(array,low,left-1);//递归遍历
}
if(right+1<high)
{
sort(array, right+1, high);
}
}
}
测试代码如下 :
public static void main(String[] args) {
int a[]={12,3,2,13,123,1};
sort(a,0,a.length-1);
for (int i : a) {
System.out.print(" "+i);
}
}
输出的结果如下:
具体的代码已经实现,代码的正确性,请大家亲自测试,若有疑问,请call me!!!!谢谢您的阅读!!!