选择排序
#include<iostream>
#include<algorithm>
using namespace std;
void selectionSort( int arr[], int n ) //arr数组,个数n
{
for(int i=0 ; i<n ; i++)
{
int minIndex = i; //寻找[i,n)区间里的最小值
for( int j= i+1; j<n ; j++)
{
if( arr[j] < arr[minIndex])
minIndex = j;
}
swap( arr[i] , arr[minIndex]);
}
}
插入排序
using namespace std;
template<typename T>
void insertionSort(T arr[], int n){
for( int i = 1 ; i < n ; i ++ ) {
// 寻找元素arr[i]合适的插入位置
// 写法1
for( int j = i ; j > 0 ; j-- )
if( arr[j] < arr[j-1] )
swap( arr[j] , arr[j-1] );
else
break;
// 写法2
for( int j = i ; j > 0 && arr[j] < arr[j-1] ; j -- )
swap( arr[j] , arr[j-1] );
}
return;
}
插入排序优化
可提前终止内层循环,减少交换,使其效率提高