- 快速排序算法是什么?
排序快速算法的英文冒泡排序的改进,比起冒泡排序,快速排序算法的速度要快了很多;
- 快速排序算法有什么用?
快速排序算法的原理:
若有一个数组为A,长度为N;获取一个key(一般是数组的第一个元素),设置两个参数(i,j)中,i = 0,j = N-1;
先从j开始往前搜索(j--),如果A [j]>key,则将A [j]的中的值赋给A [i],即将小于键的值放到前面;
上述运行一遍后再从我开始往后搜索(i ++),如果A [i]>key,则将A [i]中的值赋给A [j],即将大于键的值放到后面去;
循环运行,最后的到的数组会以键值为分界将整个数组分成两部分,前半部分的值都是小于关键的,后半部分的值大于密钥;
特别注意,排序完以后的数组并不是从小到大的,还需要使用递归将整个数组继续排序才能得到一个从小到大的数组;
- 快速排序算法怎么用?
快速排序的原理上面已经提到了,接下来就是一些简单的代码,我们首先需要定义一个方法,传入3个参数,这里需要传入一个数组,
public void sort(int a[],int i,int j)
这里I = 0,j = a.length-1;在方法里面我们还需要定义一个参数,key= a [i];然后就可以开始我们的算法了
public static void sort(int a[],int i, int j) {
int start = i;
int end = j;
int key = a[i];
while (start < end) {
// 找到第一个小于key的值(从后往前),进行值互换。
while (start < end && a[end] >= key) {
end--;
}
if (a[end] < key) {
int t = a[end];
a[end] = a[start];
a[start] = t;
}
// 找到第一个大于key的值(从前往后),进行值互换。
while (start< end && a[start] <= key) {
start++;
}
if (a[start] > key) {
int t = a[start];
a[start] = a[end];
a[end] = t;
}
}
if (start > i) {
sort(i, start - 1, a);
}
if (end< j) {
sort(start + 1, j, a);
}
}
然后我们只需要在main方法中调用就可以了
public static void main(String[] args) {
// 创建数组,并赋值
int[] a = { 1223, 234, 42, 1, 53, 6 };
// 第一个
int i = 0;
// 最后一个
int j = a.length - 1;
// 调用排序的方法
sort(a,i,j);
// 输出
for (int k : a) {
System.out.println(k);
}
}
这样我们就可以得到一个排序好了的数组了