希尔排序温习~~
来源:互联网 发布:淘宝的询单有礼在哪里 编辑:程序博客网 时间:2024/06/10 15:42
#include <stdio.h>
void
printf_array(int *array,int len)
{
int i=0;
for(i =0;i<len;i++)
{
printf("%d ",*(array+i));
//printf("%d ",array[i]);
}
printf("\n");
}
void swap_array(int *array,int i,int k)
{
int temp = *(array+i);
*(array+i) = *(array+k);
*(array+k) = temp;
}
void InsertSort(int *array,int len)//O(n*n)
{
int i=0,j=0;
int k = -1;
int temp=-1;
for(i=1;i<len;i++)
{
k=i;
temp =*(array+k);
for(j=i-1;(j>=0)&&(*(array+j)> temp);j--)
{
*(array+j+1) = *(array+j);
k =j;
}
*(array+k)=temp;
}
}
void SelectSort(int *array,int len)//O(n*n)
{
int i=0,j=0;
int k = -1;
for(i=0;i<len;i++)
{
k=i;
for(j=i;j<len;j++)
{
if( *(array+j) < *(array+k) )
k =j;
}
swap_array(array,i,k);//找出最小的然后和有序的最后的替换
}
}
void BubblSort(int *array,int len)
{
int i=0;
int j=0;
int exchange=1;
for(i=0;i<len&& exchange;i++)
{
exchange = 0;
for(j=len-1;j>i;j--)
{
if(*(array+j-1)> *(array+j))//如果有逆序,则交换,并记录
{
swap_array(array,j-1,j);
exchange =1;
}
}
}
printf("exchange times%d\n",i);
}
void ShellSort(int *array,int len)//O(n*n)
{
int i=0,j=0;
int k = -1,gap;
int temp =-1;
gap = len;
do
{
gap = gap/3+1;// 一般取的是3