快速排序
public class QuickSort {
public static void quickSort(int[] arr
, int l
, int r
) {
if (arr
== null
|| arr
.length
< 2) {
return;
}
if (l
< r
) {
swap(arr
, l
+ (int) Math
.random() * (r
- l
+ 1), r
);
int[] p
= partition(arr
, l
, r
);
quickSort(arr
, l
, p
[0] - 1);
quickSort(arr
, p
[1] + 1, r
);
}
}
public static int[] partition(int[] arr
, int l
, int r
) {
int less
= l
- 1;
int more
= r
;
while (l
< more
) {
if (arr
[l
] < arr
[r
]) {
swap(arr
, ++less
, l
++);
} else if (arr
[l
] > arr
[r
]) {
swap(arr
, --more
, l
);
} else {
l
++;
}
}
swap(arr
, more
, r
);
return new int[] { less
+ 1, more
};
}
public static void swap(int[] arr
, int i
, int j
) {
int tmp
;
tmp
= arr
[i
];
arr
[i
] = arr
[j
];
arr
[j
] = tmp
;
}
public static void main(String
[] args
) {
int[] arr
= { 2, 3, 6, 1, 8, 5, 5, 6, 0 };
quickSort(arr
, 0, arr
.length
- 1);
for (int i
= 0; i
< arr
.length
; i
++) {
System
.out
.println(arr
[i
]);
}
}
}
转载请注明原文地址: https://mac.8miu.com/read-503467.html