## 快速排序 原

kimiz

``````#include <stdio.h>
#include <stdlib.h>

void swap(int *i, int *j);
int choose_pivot(int i, int j);
int partition(int list[], int m, int n);
void quicksort(int list[], int m, int n);
void display(int list[], const int n);
const int SIZE = 10;

int main()
{
int list[SIZE];

int i = 0;
for (i = 0; i < SIZE; ++i) {
list[i] = rand();
}

printf("the list before sorting is: \n");
display(list, SIZE);

quicksort(list, 0, SIZE-1);

printf("the list after sorting is: \n");
display(list, SIZE);

return 0;
}

void swap(int *i, int *j)
{
int temp;

temp = *i;
*i = *j;
*j = temp;
}

int choose_pivot(int i, int j)
{
return (i+j)/2;
}

int partition(int list[], int m, int n)
{
int pivot;
int pivotkey;

pivot = choose_pivot(m, n);
swap(&list[m], &list[pivot]);
pivotkey = list[m];

while (m < n) {
while ( (m < n) && (list[n] >= pivotkey) )
n--;
if (m < n) {
list[m++] = list[n];
}

while ( (m < n) && (list[m] < pivotkey) )
m++;
if (m < n) {
list[n--] = list[m];
}
}
list[m] = pivotkey;

pivot = m;
return pivot;
}
void quicksort(int list[], int m, int n)
{
int pivot;
if (m < n) {
pivot = partition(list, m, n);
quicksort(list, m, pivot-1);
quicksort(list, pivot+1, n);
}
}

void display(int list[], const int n)
{
int i;
for(i = 0; i < n; ++i) {
printf("%d\t", list[i]);
}
}``````

``````the list before sorting is:
41      18467   6334    26500   19169   15724   11478   29358   26962   24464
the list after sorting is:
41      6334    11478   15724   18467   19169   24464   26500   26962   29358

Process returned 0 (0x0)   execution time : 0.042 s
Press any key to continue.``````

### 评论(1)

/** 冒泡排序 /public static void Bubble_Sort(int[] a) {for (int i = 0; i < a.length - 1; i++) {for (int j = 0; j < a.length - i - 1; j++) {if (a[j] > a[j + 1]) {a[i] = a[i] + a[......

2014/04/26
0
1

01/11
0
0

2016/09/03
49
0

1.说明 快速排序法（quicksort）是目前所公认最快的排序方法之一（视解题的对象而定），虽然快速排序法在最差状况下可以达O(n2)，但是在多数的情况下，快速排序法的效率表现是相当不错的。快...

2017/12/14
0
0

2016/06/06
1K
0

fabric增删改查Mac

18分钟前
2
0

42分钟前
3
0
Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

java菜分享
42分钟前
3
0

Bob2100

5
0
Kafka流式处理

Kafka Streams 初识流式处理 什么是数据流 数据流（也叫事件流）是无边界数据集的抽象表示。无边界意味着无限和持续增长。无边界数据集之所以是无限的，是因为随着时间的推移，新记录会不断加...

10
0