#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);//找出最小的然后和有序的最后的替换
}
}
int main(void )
{
int array[]={21,25,49,25,16,8};
int len = sizeof(array) / sizeof(*array);
//SelectSort(&array[0],len);
printf("%d\n",len);
InsertSort(array,len);
printf_array(&array[0],len);
while(1);
return 0;
}
转发至微博
转发至微博