给定数组A,其中有n=10个元素且无序排列: A={2, 4, 0, 6, 8, 9, 1, 3, 5, 7} 使用快速排序方法实现从小到大排列,C语言代码,Java代码,及时间复杂度
时间: 2024-05-23 18:08:33 浏览: 118
快速排序是一种常用的排序算法,其时间复杂度为O(nlogn)。其基本思想是:在待排序的数组中,选择一个基准元素,将待排序数组分成两个子数组,左侧子数组的所有元素都比基准元素小,右侧子数组的所有元素都比基准元素大,然后再对左右两个子数组进行递归排序。
以下是C语言实现快速排序的代码:
```
void quick_sort(int A[], int left, int right) {
if(left >= right) return; // 递归边界
int i = left, j = right, pivot = A[left];
while(i < j) {
while(i < j && A[j] >= pivot) j--;
A[i] = A[j];
while(i < j && A[i] <= pivot) i++;
A[j] = A[i];
}
A[i] = pivot;
quick_sort(A, left, i - 1);
quick_sort(A, i + 1, right);
}
int main() {
int A[10] = {2, 4, 0, 6, 8, 9, 1, 3, 5, 7};
quick_sort(A, 0, 9);
for(int i = 0; i < 10; i++) {
printf("%d ", A[i]);
}
return 0;
}
```
以下是Java实现快速排序的代码:
```
public static void quickSort(int[] A, int left, int right) {
if(left >= right) return; // 递归边界
int i = left, j = right, pivot = A[left];
while(i < j) {
while(i < j && A[j] >= pivot) j--;
A[i] = A[j];
while(i < j && A[i] <= pivot) i++;
A[j] = A[i];
}
A[i] = pivot;
quickSort(A, left, i - 1);
quickSort(A, i + 1, right);
}
public static void main(String[] args) {
int[] A = {2, 4, 0, 6, 8, 9, 1, 3, 5, 7};
quickSort(A, 0, 9);
for(int i = 0; i < 10; i++) {
System.out.print(A[i] + " ");
}
}
```
时间复杂度:O(nlogn)
阅读全文