选择排序
中心思想 : 通过一次遍历后,将最小的元素放到“前面”,以此类推(在遍历过程中记录位置的是下标索引)
//**************** 选择排序 *********************
#include <iostream>
using namespace std;
template <typename T>
void SelectSort(T arr[],int n){
for(int i = 0;i < n;i++){
int MinIndex = i;
for(int j = i + 1;j < n;j++){
if(arr[MinIndex] > arr[j])
MinIndex = j;
}
swap(arr[i],arr[MinIndex]);
}
}
int main() {
int arr[] = {1,3,4,2,6};
int len = sizeof(arr) / sizeof(arr[0]);
SelectSort(arr,len);
for(int i = 0;i < len;i++){
cout<<arr[i]<<" ";
}
}
插入排序
中心思想 : 一个元素和它前面的所有元素比大小,通过相邻位置的元素交换来调整位置
********** 插入排序 ***********
#include <iostream>
using namespace std;
template <typename T>
void InsertSort_TimeLong(T arr[],int n){
for(int i = 1;i < n;i++){
for(int j = i;j > 0 && arr[j] < arr[j -1]; j--){
swap(arr[j],arr[j - 1]);
}
}
}
template <typename T>
void InsertSort_TimeShort(T arr[],int n){
for(int i = 1;i < n;i++){
//“公开处刑”
T e = arr[i];
int j;
for(j = i;j > 0 && e < arr[j - 1];j--){
//您先在这儿,行叭
arr[j] = arr[j - 1];
}
arr[j] = e;
}
}
int main(){
int arr[] = {1,3,4,9,6};
int len = sizeof(arr) / sizeof(arr[0]);
// InsertSort_TimeLong(arr,len);
InsertSort_TimeShort(arr,len);
for(int i = 0;i < len;i++){
cout<<arr[i]<<" ";
}
}