一:堆排序算法
#include<stdio.h>
void adjustHeap(int arr[],int i,int length)
{
int temp=arr[i];
for(int k=2*i+1;k<length;k=k*2+1)
{
if(k+1<length&&arr[k]<arr[k+1])
{
k++;
}
if(arr[k]>temp){
arr[i]=arr[k];
i=k;
}
else{
break;
}
}
arr[i]=temp;
}
void swap(int arr[],int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
void sort(int arr[],int length)
{
for(int i=length/2-1;i>=0;i--)
{
adjustHeap(arr,i,length);
}
for(int j=length-1;j>0;j--)
{
swap(arr,0,j);
adjustHeap(arr,0,j);
}
}
int main()
{
int a[10]={12,56,34,23,89,67,45};
sort(a,7);
for(int i=0;i<7;i++)
{
printf("%d ",a[i]);
}
}
二:快速排序算法
#include<stdio.h>
void quiksort(int a[],int low,int high)
{
int i=low;
int j=high;
int temp=a[i];
if(low<high)
{
while(i<j)
{
while((a[j]>=temp)&&i<j)
{
j--;
}
a[i]=a[j];
while((a[i]<=temp)&&i<j)
{
i++;
}
a[j]=a[i];
}
a[i]=temp;
quiksort(a,low,i-1);
quiksort(a,j+1,high);
}
else
return ;
}
int main()
{
int a[10]={5,2,4,3,16,9};
quiksort(a,0,5);
for(int i=0;i<6;i++)
{
printf("%d ",a[i]);
}
}