#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;
}