您的位置:首页 > 编程语言

快速排序代码实现

2014-05-31 20:42 211 查看
public static int getFristIndex(int[] arr,int frist,int end)
{
int i = frist;
int j = end;
while(i<j)
{
while(i<j && arr[i]<=arr[j])j--;
if(i<j)
{
int temp= arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
}
while(i<j && arr[i]<=arr[j])i++;
if(i<j)
{
int temp= arr[i];
arr[i] = arr[j];
arr[j] = temp;
j--;
}
}

return i;
}

public static int[] quickSort(int[] arr,int first,int end)
{
if(first<end)
{
int middle = getFristIndex(arr, first, end);
quickSort(arr, first, middle-1);
quickSort(arr, middle+1, end);
}

return arr;
}
一般分如下步骤:

1)选择一个枢纽元素(有很对选法,我的实现里采用去中间元素的简单方法)

2)使用该枢纽元素分割数组,使得比该元素小的元素在它的左边,比它大的在右边。并把枢纽元素放在合适的位置。

3)根据枢纽元素最后确定的位置,把数组分成三部分,左边的,右边的,枢纽元素自己,对左边的,右边的分别递归调用快速排序算法即可。

快速排序的核心在于分割算法,也可以说是最有技巧的部分。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: