交换排序实现(冒泡排序,快速排序)
2008-03-05 13:44
435 查看
今天复习了数据结构的交换排序,写了个冒泡和快速排序的实现。
1 #include <stdio.h>
2
3 void bubble_sort(int *p, int size){
4 int i = 0, j = 0;
5
6 for(i = 0; i < size; i++)
7 for(j = 0; j < size - i; j++)
8 if (p[j] > p[j+1]){
9 p[j] = p[j] + p[j+1];
10 p[j+1] = p[j] - p[j+1];
11 p[j] = p[j] - p[j+1];
12 }
13 }
14
15 void quick_pass(int *p, int start, int end, int *mid){
16 int t = p[start];
17
18 while(start < end){
19 while(start < end && t < p[end])
20 --end;
21 p[start] = p[end];
22
23 while(start < end && t > p[start])
24 ++start;
25 p[end] = p[start];
26 }
27 p[start] = t;
28 *mid = start;
29 }
30
31 void quick_sort(int *p, int start, int end){
32 int mid = 0;
33 if (start < end){
34 quick_pass(p, start, end, &mid);
35 quick_sort(p, start, mid-1);
36 quick_sort(p, mid+1, end);
37 }
38 }
39
40 void show_data(int *p, int size){
41 int i = 0;
42
43 for(i = 0; i < size; i++)
44 printf("%d/t", p[i]);
45 printf("/n");
46 }
47
48 int main(){
49 int data[10] = {4, 9, 3, 1, 8, 0, 2, 5, 7, 6};
50 show_data(data, sizeof(data)/sizeof(int));
51 //bubble_sort(data, sizeof(data)/sizeof(int));
52 quick_sort(data, 0, 9);
53 show_data(data, sizeof(data)/sizeof(int));
54 return 0;
55 }
1 #include <stdio.h>
2
3 void bubble_sort(int *p, int size){
4 int i = 0, j = 0;
5
6 for(i = 0; i < size; i++)
7 for(j = 0; j < size - i; j++)
8 if (p[j] > p[j+1]){
9 p[j] = p[j] + p[j+1];
10 p[j+1] = p[j] - p[j+1];
11 p[j] = p[j] - p[j+1];
12 }
13 }
14
15 void quick_pass(int *p, int start, int end, int *mid){
16 int t = p[start];
17
18 while(start < end){
19 while(start < end && t < p[end])
20 --end;
21 p[start] = p[end];
22
23 while(start < end && t > p[start])
24 ++start;
25 p[end] = p[start];
26 }
27 p[start] = t;
28 *mid = start;
29 }
30
31 void quick_sort(int *p, int start, int end){
32 int mid = 0;
33 if (start < end){
34 quick_pass(p, start, end, &mid);
35 quick_sort(p, start, mid-1);
36 quick_sort(p, mid+1, end);
37 }
38 }
39
40 void show_data(int *p, int size){
41 int i = 0;
42
43 for(i = 0; i < size; i++)
44 printf("%d/t", p[i]);
45 printf("/n");
46 }
47
48 int main(){
49 int data[10] = {4, 9, 3, 1, 8, 0, 2, 5, 7, 6};
50 show_data(data, sizeof(data)/sizeof(int));
51 //bubble_sort(data, sizeof(data)/sizeof(int));
52 quick_sort(data, 0, 9);
53 show_data(data, sizeof(data)/sizeof(int));
54 return 0;
55 }
相关文章推荐
- 交换排序(冒泡排序—改进、快速排序)
- Kotlin练习 之使用Kotlin实现:二分查找,选择排序,冒泡排序,快速排序
- (排序)用C语言实现的快速排序(交换排序)
- 算法分析-交换排序(冒泡排序 & 快速排序)
- java 冒泡排序和快速排序 实现
- 交换排序(冒泡排序和快速排序)
- java中各种常用排序实现(直接插入排序、直接选择排序、堆排序、冒泡排序、快速排序和归并排序)
- 使用python实现冒泡排序和快速排序
- 交换排序----冒泡排序----java实现
- 排序算法——交换排序(冒泡排序、快速排序)(java)
- 交换排序中冒泡排序和快速排序的简单比较
- Scala实现冒泡排序、归并排序和快速排序
- 交换排序之冒泡排序Java实现
- PHP实现插入排序,选择排序,冒泡排序和快速排序
- 冒泡排序-选择排序-快速排序(PHP实现)
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- java实现排序算法之交换排序(冒泡排序和快速排序)
- 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)