再白的小白也要会的:
C++
小小白还不会更多的数据结构,就简单地用数组写了,也查过前辈的代码,不过建议先看大佬的讲解,然后先自己写一写,再看代码。
#define Swap(a,b){int t=a;a=b;b=t;}//搞一个交换函数
//冒泡排序
void bubble_sort(int *p,int n){
for(int i=0;i<n-1;i++){
for(int j=i;j<n-i-1;j++){
if(p[j]>p[j+1])Swap(p[j],p[j+1]);//由小到大
}
}
}
//插入排序
void insert_sort(int *p,int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=j;k<n-1;k++){
if(p[k]>p[k+1])Swap(p[k],p[k+1]);//由小到大
}
}
}
}
//选择排序
void elect_sort(int left,int right,int *p){
int max=p[1],min=p[0];
for(int j=left,k=right;j<=k;j++,k--){
for(int i=left;i<=right;i++){
if(p[i]>=max)max=p[i];
if(p[i]<=min)min=p[i];
}
Swap(p[left],min); //小的往前
Swap(p[right],max); //大的往后
}
}
//快速排序(错误已经更正)
void quick_sort(int left,int right,int *p){
if(left>=right)return;
int i=left,j=right,mid;
mid=p[(i+j)/2];
for(i,j;i<=j;i++,j--){
while(p[j]>mid){j--;}
while(p[i]<mid){i++;}
if(p[i]>p[j])Swap(p[i],p[j]);
}
//quick_sort(left,mid,p);
//quick_sort(mid+1,right,p);
if(left<j)quick_sort(left,j,p);
if(i<right)quick_sort(i,right,p);
}
再附一张插入排序的图示: