/**
* @brief select_sort 选择排序
* @param arr
* @param len
*/
void select_sort(int *arr,int len){
for(int i=0;i<len;i++){
int mix=arr[i];
int index=i;
for(int j=i;j<len;j++){
if(mix>arr[j]){
mix=arr[j];
index=j;
}
}
if(index==i)
continue;
int temp=arr[i];
arr[i]=mix;
arr[index]=temp;
}
}
/**
* @brief select_sort2 选择排序
* @param arr
* @param len
*/
void select_sort2(int *arr,int len){
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
if(arr[i]>arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
/**
* @brief quick_sort 快速排序
* @param arr
* @param left
* @param right
*/
void quick_sort(int *arr,int left,int right){
if(left>=right)
return;
int l=left;
int r=right;
int key=arr[l];
while(l<r){
while(l<r&&key<=arr[r])
r--;
arr[l]=arr[r];
while(l<r&&key>=arr[l])
l++;
arr[r]=arr[l];
}
arr[l]=key;
quick_sort(arr,left,l-1);
quick_sort(arr,l+1,right);
}
/**
* @brief insert_sort 插入排序
* @param arr
* @param len
*/
void insert_sort(int *arr,int len){
for(int i=1;i<len;i++){
for(int j=i;j>0;j--){
if(arr[j]<arr[j-1]){
int temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}else{
break;
}
}
}
}
/**
* @brief bubble_sort 冒泡排序
* @param arr
* @param len
*/
void bubble_sort(int *arr,int len){
int flag=0;
for(int i=0;i<len;i++){
flag=0;
for(int j=0;j<len-i-1;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=1;
}
}
if(flag==0)
return ;
}
}
/**
* @brief printArr 遍历数组
* @param arr
* @param len
*/
void printArr(int *arr,int len){
for(int i=0;i<len;i++){
printf("%d\n",arr[i]);
}
}
int main(int argc, char *argv[])
{
int arr[10]={1,2,11,'a',134,12,59,67,95,6};
// select_sort(arr,10);
// select_sort2(arr,10);
quick_sort(arr,0,9);
// bubble_sort(arr,10);
printArr(arr,10);
return 0;
}
c语言入门:排序算法
猜你喜欢
转载自blog.csdn.net/qq_17827919/article/details/72857904
今日推荐
周排行