先看思想,再看代码,第一个代码不好分析的话,看第二个纯代码,这是一个升序排序,每一步都有仔细的说明,还是不懂私信或者留言
1
思想就是定义一个首索引,一个尾索引,还有一个哨兵元素,然后尾索引往前遍历找比哨兵元素小的,首索引往后遍历,找比哨兵元素大的,交换,遍历,交换,遍历,交换…一旦首尾索引相遇,相遇位置元素和哨兵元素交换,然后哨兵元素左边都比哨兵元素小,右边都比哨兵元素大,然后哨兵元素左边数组迭代,右边数组迭代。以达成排序目的(主要理解交换,遍历,交换,遍历第一个代码中有详细解释)
public class FastSort {
public static void main(String[] args) {
int arr[] = new int[]{5,1,6,10,4,3,9,8,7,2};
Sort(arr,0,arr.length-1);//主要看这个排序方法
for(int a : arr){//增强for循环遍历排序好的数组
System.out.println(a);
}
}
private static void Sort(int arr[],int left,int right){
if(left > right){//放在第一步,很重要,首索引不能大于尾索引
return;
}
int i = left;
int j = right;
int key = arr[left];//定义哨兵元素(我习惯放在最左边)
while(i < j){
while(i= key){//从右边找比哨兵元素小的,找不到就j--,找到后跳出当前循环
j--;
}
//注意用我这个条件判断的话两个内部的while循环不能换顺序
while(i
//下面是纯代码
下面展示一些 内联代码片。
// A code block
var foo = 'bar';
public class FastSort {
public static void main(String[] args) {
int arr[] = new int[]{12,5,1,6,10,4,3,9,8,11,7,2};
Sort(arr,0,arr.length-1);
for(int a : arr){
System.out.println(a);
}
}
private static void Sort(int arr[],int left,int right){
if(left > right){
return;
}
int i = left;
int j = right;
int key = arr[left];
while(i < j){
while(i= key){
j--;
}
while(i
博主大三菜鸟,写这个希望能帮到大家!



