插入排序及改进
//插入排序
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 - 1] > arr[j])
std::swap(arr[j - 1], arr[j]);
else
break;
}*/
//写法2
//for (int j = i; j > 0 && arr[j] < arr[j - 1]; j--)
//std::swap(arr[j], arr[j - 1]);
//写法3
T temp = arr[i];
int j = i;//保存元素temp应该插入的位置
for (; j > 0 && arr[j-1] > temp; j--)
{
arr[j] = arr[j-1];
}
arr[j] = temp;
}
}
学习算法视频,然后及时练习,加油!