#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

void Swap(int* a, int* b)

{ int temp; temp = *a; *a = *b; *b = temp; }

int select_sort(int arr[], int L, int R)

{ int key = L; int prev = L; int cur = L + 1;//注意建立三个常量 一个代表 数组最左边,一个代表数组最右边,还有一个选取第一个数字做标准。 用左右两边得数和标注做比较 。

//单趟排序
while (cur <= R)
{
if (arr[cur] < arr[key])
{
prev++;
Swap(&arr[cur], &arr[prev]);
}
cur++;
}
Swap(&arr[prev], &arr[key]);

return prev;

}

void select_sort1(int arr[], int L, int R) { if (L >= R) return;

int keyi = select_sort(arr, L, R);

//[left,keyi-1] keyi [key+1,R]

//左区间 有序
select_sort1(arr, L, keyi - 1);

//右区间有序
select_sort1(arr, keyi + 1, R);

}

int main() { int arr[5]; printf("请输入arr的内容:"); for (int i = 0; i < 5; i++) { scanf("%d", &arr[i]); }

int sz = sizeof(arr) / sizeof(arr[0]);
select_sort1(arr, 0, sz - 1);
for (int i = 0; i <= 4; i++)
printf("%d ", arr[i]);
return 0;

}