7.24 快排总结
来源:互联网 发布:数据库验收要求 编辑:程序博客网 时间:2024/06/04 19:21
dd版本:
实战中,未被超越。
1 void quick_sort(int *a,int f,int t) 2 { 3 int i,j,k; 4 i=f; 5 j=t; 6 k=a[f]; 7 8 if(i>=j) return; 9 10 while(i<j)11 {12 while(i<j && a[j]>=k)13 j--;14 if(i<j)15 a[i++]=a[j];16 17 while(i<j && a[i]<=k)18 i++;19 if(i<j)20 a[j--]=a[i];21 }22 23 a[i]=k;24 25 quick_sort(a,f,i-1);26 quick_sort(a,i+1,t);27 return;28 }
消除一个递归的快排:
1 #include<stdio.h> 2 #define N 250000 3 4 void quick_sort(int *a,int f,int t) 5 { 6 int i,j,k; 7 8 while(f < t) { 9 i=f;10 j=t;11 k=a[f];12 13 while(i<j)14 {15 while(i<j && a[j]>=k)16 j--;17 if(i<j)18 a[i++]=a[j];19 20 while(i<j && a[i]<=k)21 i++;22 if(i<j)23 a[j--]=a[i];24 }25 26 a[i]=k;27 28 quick_sort(a,f,i-1);29 30 f = i + 1;31 }32 return;33 }34
《算法C语言实现》
冒泡 + 快排
1 #include <stdio.h> 2 #include <string.h> 3 4 #define swap(A, B) {int tmp=A;A=B;B=tmp;} 5 6 int A[1012]; 7 8 9 void bubble(int A[],int l, int r){10 int i,j;11 for(i=l;i<r;++i)12 for(j=r;j>l;j--){13 if(A[j-1]<A[j])14 swap(A[j-1], A[j]);15 }16 }17 18 int partition(int a[], int l, int r){19 int i = l-1,j=r;20 for(;;){21 while(a[++i]>a[r]);22 while(a[r]>a[--j])23 if(j==l) break;24 if(i>=j) break;25 swap(a[i],a[j]);26 }27 swap(a[i],a[r]);28 return i;29 }30 31 void quicksort(int a[], int l, int r){32 int i;33 if(r<=l) return;34 i = partition(a, l, r);35 quicksort(a, l, i-1);36 quicksort(a, i+1, r);37 }
速度有待提高
快排的库函数
qsort 与结构体联系比较大。
0 0
- 7.24 快排总结
- 快排总结
- 排序总结---快排
- 调用快排函数总结
- 快排总结和优化
- 快排实现及其错误总结
- 交换排序总结(快排,冒泡)
- 快排总结 原代码 以及 如何调用
- Python算法之快排学习总结
- 对归并、堆排、快排的一些总结。
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- SZU:B54 Dual Palindromes
- SZU:J38 Number Base Conversion
- 九度OJ 1544 数字序列区间最小值
- SZU:G32 Mass fraction
- 7.24 素数总结
- 7.24 快排总结
- 7.24 小结
- 7.25 RPN转换
- SZU:B47 Big Integer I
- SZU:D89 The Settlers of Catan
- 7.29 DFS总结
- 算法:优先级队列
- 最短路径 dijkstra
- FLOYD 求最小环