#include <stdio.h>
int InserSort(int arr[], int len)
{
int i, j, k;
int target;
# 默认第一个元素有序,因此,i从1开始。
for(i=1; i<len; i++)
{
# j为待插入数据的下标,target为待插入的数据。
j = i;
target = arr[i];
while(j>0 && target < arr[j-1])
{
# 将待插入数据前面的数据提取到待插入数据所在位置,
# 稍后会将待插入数据向前移动。
arr[j] = arr[j-1];
j--;
}
# 向前移动待插入数据
arr[j] = target;
k = 0;
while(k<len)
{
printf("%d", arr[k]);
k++;
}
printf("\n");
}
return 0;
}
int SelectSort(int arr[], int len)
{
int i, j, min;
for(i=0; i<len-1; i++)
{
min = i;
for(j=i; j<len; j++)
{
if(arr[min] > arr[j]){
min = j;
}
}
if(min != i){
arr[min] = arr[i] - arr[min];
arr[i] = arr[i] - arr[min];
arr[min] = arr[i] + arr[min];
}
for(j=0; j<len; j++)
{
printf("%d",arr[j]);
}
printf("\n");
}
return 0;
}
int main()
{
int arr[5] = {5,8,3,9,2};
printf("****Insert Sort****:\n");
InserSort(arr, 5);
printf("\n****Select Sort****:\n");
SelectSort(arr,5);
return 0;
}
选择和插入排序
最新推荐文章于 2021-02-16 12:15:39 发布