简单选择排序是不稳定排序
#ifndef SELECTSORT_H #define SELECTSORT_H template<class T> inline void Swap(T *a,T *b) //交换两个数值 { T temp = *a; *a = *b; *b = temp; } template<class T> void SelectSort(T *a,int len) //简单排序算法 { T min; //用于记录最小元素的下标 for(int i = 0;i < len - 1;++i) { min = i; //设i为最小元素的下标 for(int j = i + 1;j < len;++j) { if(a[min] > a[j]) //如果a[min] > a[j]则把j记录为最小值 min = j; } if(i != min) //如果i不为最小值的下标,进行交换 Swap(&a[i],&a[min]); } } #endif //SELECTSORT_H
#include "SelectSort.h" #include <stdio.h> int main() { int a[] = {20,12,11,9,8,35,56,25,5,6}; int len = sizeof(a) / sizeof(*a); printf("排序前数组的元素:\n"); for(int i = 0;i < len;++i) printf("%d ",a[i]); printf("\n"); SelectSort(a,len); printf("排序后数组的元素:\n"); for(int i = 0;i < len;++i) printf("%d ",a[i]); return 0; }