#include<stdlib.h>
#include<stdio.h>
/*
选择最小的数来作为基准进行排序
简单选择排序是不稳定排序
不论数组是否有序,时间复杂度都为O(n²)
*/
//简单选择排序排序 耿国华版本 可运行但是不能实现从下标0的全排
void SelectSort(int r[], int n) {
int k, i;
for (i = 1;i <= n - 1;++i) {
k = i;
for (int j = i + 1;j <= n - 1;++j)
if (r[j] < r[k]) k = j;
if (k != i) {
int x = r[i];
r[i] = r[k];
r[k] = x;
}
}
}
//简单选择排序排序 耿国华变动版 实现数组从下标0到length的全排序
void SelectSort(int r[],int n){
int k,i;
for (i = 0;i <= n - 1;i++) {
k = i;
for (int j = i + 1;j <= n-1;j++)
if (r[j] < r[k]) k = j;
if (k != i) {
int x = r[i];
r[i] = r[k];
r[k] = x;
}
}
}
void main() {
int A[7] = {55,13,42,94,17,5,70 };
SelectSort(A,7);
for (int i = 0;i < 7;i++) {
printf("%d\n", A[i]);
}
system("pause");
}
void SelectSort(int* a, int n) {
int left = 0, right = n - 1;
while (left<right)
{
int mini = left, maxi = left;
for (int i = left+1; i <= right; ++i)
{
if (a[i] < a[mini]) {
mini = i;
}
if (a[i] > a[maxi]) {
maxi = i;
}
}
Swap(&a[left], &a[mini]);
if (left == maxi)
maxi = mini;
Swap(&a[right], &a[maxi]);
left++;
right--;
}
}
#include<stdlib.h>#include<stdio.h>/*选择最小的数来作为基准进行排序简单选择排序是不稳定排序不论数组是否有序,时间复杂度都为O(n²)*///简单选择排序排序 耿国华版本 可运行但是不能实现从下标0的全排void SelectSort(int r[], int n) { int k, i; for (i = 1;i <= n - 1;++i) { k = i; f...