一.冒泡排序
- 冒泡排序是一种稳定的排序方法。
- 平均时间复杂度为O(n*n),空间复杂度O(1)。
- 适用于顺序表和链表。
#include<stdio.h>
int main(){
bool Flag;
int array[8]={2,5,3,66,7,0,1,-1};
for(int i=0;i<8;i++){
Flag=false;
for(int j=1;j<8-i;j++){
if(array[j-1]>array[j]){
int temp=array[j];
array[j]=array[j-1];
array[j-1]=temp;
Flag=true;
}
}
if(Flag==false)break;
}
for(int i=0;i<8;i++){
printf("%d->",array[i]);
}
return 0;
}
二.快速排序
- 快速排序是所有内部排序算法中平均性能最优的排序的算法。
- 快速排序基本思想基于分治法,使用递归。
- 平均时间复杂度:O(n*log2n) //log以2为低。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/324d23e01f787e1170e1c4af20defe1b.jpeg)
#include<stdio.h>
int Partition(int arry[],int low,int high){
if(low<high){
int first=arry[low];
while(low<high){
while(low<high&&arry[high]>=first)--high;
arry[low]=arry[high];
while(low<high&&arry[low]<=first)++low;
arry[high]=arry[low];
}
arry[low]=first;
}
return low;
}
void QuickSort(int arry[],int low,int high){
if(low<high){
int FirstPos=Partition(arry,low,high);
QuickSort(arry,low,FirstPos-1);
QuickSort(arry,FirstPos+1,high);
}
}
int main(){
int arry[8]={2,5,7,3,-1,8,0,6};
QuickSort(arry,0,7);
for(int i=0;i<8;i++){
printf("%d->",arry[i]);
}
return 0;
}