C语言排序算法(完整发布,全网最全)
插入算法
#include<stdio.h>
void insertsort(int *a, int num)
{
for(int i=1;i<num;i++)
{
int j=i-1;
int key=arr[i];
while(j>0&&key<a[j])
{
a[j+1]=a[j];
j--;
}
if(j!=i-1) {
a[j+1]=key;
}
}
}
int main()
{
int a[10]={1,3,5,7,9,2,4,6,8,10};
insertsort(a,10);
for(int i=0;i<10;i++) {
printf("%d\n",a[i]);
}
}
冒泡排序算法
#include <stdio.h>
int main()
{
int i,j,t;
int a[10] = {12,43,56,1,2,4,5,6,9,8};
for(i=0;i<10;i++)
{
for(j=0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("排列好数列");
for(i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}
快速排序
#include <stdio.h>
int main()
{
int arr[10]={1,5,2,3,8,7,9,6,4,10};
int len=sizeof(arr)/sizeof(int);
quicksort(arr,0,len-1);
for(int i=0;i<10;i++)
{
printf("%d\n",arr[i]);
}
return 0;
}
void quicksort(int arr[],int left,int right)
{
int i,j,key;
if(left>=right)
return ;
i=left;
j=right;
key=arr[i];
while(i<j)
{
while(i<j&&key>arr[i])
{
i++;
}
if(i<j)
arr[j--]=arr[i];
while(i<j&&key<arr[j])
{
j--;
}
if(i<j)
arr[i++]=arr[j];
}
arr[i]=key;
quicksort(arr,left,i-1);
quicksort(arr,i+1;right);
}
选择排序
void selectsort(int arr[],int len)
{
int i,j;
int tmp,min;
for(int i=0;i<len;i++)
{
j=i+1;
min=a[i];
for(int j=i+1;j<len;j++)
{
if(min>arr[j])
{
tmp=min;
min=arr[j];
arr[j]=tmp;
}
}
arr[i]=min;
}
}
归并排序
#include <stdio.h>
#include <stdlib.h>
void merge(int *arr,int left,int mid,int right)
{
int i=left;
int j=mid;
int *tmp=(int *)malloc((right-left)*4);
int index=0;
while(i<mid&&j<right)
{
if(arr[i]<arr[j])
tmp[index++]=arr[i++];
tmp[index++]=arr[j++];
}
while(i<mid)
{
tmp[index++]=arr[i++];
}
while(j<right)
{
tmp[index++]=arr[j++];
}
for(int i=0;i<index;i++)
{
arr[left+i]=arr[i];
}
free(tmp);
}
void mergesort(int *arr,int left,int right)
{
if(right-left<=1)
{
return ;
}
int mid =(left+right)/2;
mergesort(arr,left,mid);
mergesort(arr,mid,right);
merge(arr,left,mid,right);
}
void printA(int *arr1,int len)
{
for(int i=0;i<len;i++)
printf("%d",arr1[i]);
printf("\n");
}
int main()
{
int *arr1=(int *)malloc(4*4);
arr1[0]=10;
arr1[1]=5;
arr1[2]=4;
arr1[3]=7;
mergesort(arr1,0,4);
printA(arr1,4);
}