像玩扑克抓牌那样排序 哈哈 例子很俗套? 但形象啊朋友
---C语言实现
#include <stdio.h>
#include <stdlib.h>
//遍历数组
void LoopForArr(int arr[],int length)
{
int count;
if(arr == NULL || length <=0)return ;
for(count = 0;count<length;count++)
{
printf("%d ",arr[count]);
}
printf("\n");
}
//插入排序
void InsertionSort(int arr[],int length)
{
int count;
int UnSortedHead;//未排序头
int SortedTail;//已排序尾
int count_in;
int Temp;
if(arr == NULL || length <=0)return ;
SortedTail = 0;
UnSortedHead = 1;
while(UnSortedHead<length)
{
if(arr[UnSortedHead] < arr[SortedTail])
{
count_in = SortedTail;
Temp = arr[UnSortedHead];
while(count_in>=0)
{
if(Temp < arr[count_in])
{
arr[count_in+1] = arr[count_in];
count_in--;
}
else
break;
arr[count_in+1] = Temp;
}
}
UnSortedHead++;
SortedTail++;
}
}
int main()
{
int arr[] = {22,34,1,6,9,123,55,12,23};
InsertionSort(arr,sizeof(arr)/sizeof(arr[0]));
LoopForArr(arr,sizeof(arr)/sizeof(arr[0]));
system("pause");
return 0;
}