#include<stdio.h>
#define sizemax 10
/*直接插入排序算法:(从小到大排序)*/
void InsertSort(int array[],int n)
{
int i,j,temp,temp1;
int count=0;
for(i=1;i<n;i++)
{
temp=array[i];
for(j=i-1;j>=0;j--)/* 每次循环完毕数组的0到i-1项为一个有序的序列*/
{
count=0;/*这里count是标记位,可以减少比较次数*/
if(array[j]>temp)
{
temp1 = array[j+1];
array[j+1] = array[j];
array[j] = temp1;
count++;
}
if(count==0)
break;
}
}
}
/* 希尔排序算法:(从大到小排序)*/
void ShellSort(int array[],int n)
{
int i,d,temp;
for(d=n/2;d>0;d--)
for(i=0;i<n-d;i++)
{
if(array[i]<array[i+d])
{
temp=array[i];
array[i]=array[i+d];
array[i+d]=temp;
}
}
}
/*冒泡排序算法:(从小到大排序)*/
void BubbleSort(int array[],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
{
for(j=n-1;j>i;j--)
{
if(array[j]<array[j-1])
{
temp=array[j];
array[j]=array[j-1];
array[j-1]=temp;
}
}
}
}
/*快速排序算法*/
void QuickSort(int array[],int start,int end)
{
int i,j,temp;
i=start;
j=end-1;
if(i<j)
{
temp=array[start];
while(i!=j)
{
while(i<j && array[j]>temp)
j--;
if(i<j && array[j]<temp)
{
array[i]=array[j];
i++;
}
while(i<j && array[i]<temp)
i++;
if(i<j && array[i]>temp)
{
array[j]=array[i];
j--;
}
}
array[i]=temp;
QuickSort(array,start,i);
QuickSort(array,i+1,end);
}
}
/*归并排序(要求被排序的两段都要有序)
void merge(int array[],int n)
{
int i,fir_start,sec_start,mid;
int temp[sizemax];
int k=0;
mid=n/2;
fir_start=0;
sec_start=mid;
for(i=0;i<mid;i++)
{
if(array[fir_start]<=array[sec_start])
{
temp[k]=array[fir_start];
fir_start++;
k++;
}
else
{
temp[k]=array[sec_start];
sec_start++;
k++;
}
}
while(fir_start<mid)
{
temp[k++]=array[fir_start++];
}
while(sec_start<n)
{
temp[k++]=array[sec_start++];
}
for(i=0;i<n;i++)
array[i]=temp[i];
}
*/
void main()
{
int i;
int array[sizemax] = {8,9,11,12,13,3,4,5,6,10};
printf("/t/t/t排序算法汇总 v1.0/n/n");
/*
InsertSort(array,10);
printf("直接插入排序算法:(从小到大排序)/n");
for(i = 0;i<10;i++)
printf("%d/t",array[i]);
printf("/n");
ShellSort(array,10);
printf("希尔排序算法:(从大到小排序)/n");
for(i = 0;i<10;i++)
printf("%d/t",array[i]);
printf("/n");
BubbleSort(array,10);
printf("冒泡排序算法:(从小到大排序)/n");
for(i = 0;i<10;i++)
printf("%d/t",array[i]);
printf("/n");
*/
QuickSort(array,0,10);
printf("快速排序算法:(从小到大排序)/n");
for(i = 0;i<10;i++)
printf("%d/t",array[i]);
printf("/n");
}
排序
最新推荐文章于 2025-08-10 21:28:09 发布