看到网上有写的,但是好像有点小问题,这里更新一个测试正确的写法!!!
void DoubleSelectSort(int arr[],int len){
int low = 0, high = len -1;
while (low < high) //相等的时候就没必要再执行一次了
{
int min = low;
int max = low;
for (int i = low + 1; i <= high; i++) //这里忽略“=”的话,导致比较不完整,不能正确排序
{
if (arr[min] > arr[i])
{
min = i;
}
if (arr[max] < arr[i])
{
max = i;
}
}
int temp = arr[low];
arr[low] = arr[min];
arr[min] = temp;
if (max == low)
{
max = min;
}
int temp1 = arr[high];
arr[high] = arr[max];
arr[max] = temp1;
low ++;
high --;
printf("双向选择排序\n");
for (int i = 0; i < len; i++)
{
printf("%4d ",arr[i]);
}
Sleep(5000);
}
printf("双向选择排序\n");
for (int i = 0; i < len; i++)
{
printf("%4d",arr[i]);
}
}