1.直接插入排序
将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已经排序的元素小,则交换,直到全部元素都比较过。
1)第一层循环,遍历待比较的所有数组元素;
2)第二层循环,将本轮选择的元素与已经排好序的元素相比较;
2.图例
3.算法
//直接插入排序
//参数1:数组
//参数2:元素个数
void insertSort(int *arr,int num)
{
for (int i = 1;i < num;i++)
{
for (int j = i; j > 0; j--)
{
if (arr[j] < arr[j - 1])
{
//交换元素
swap(arr[j - 1], arr[j]);
}
}
}
}
//打印数组
void printArr(int *arr, int num)
{
for (int i = 0;i < num;i++)
{
cout << arr[i] << " ";
}
}
int main()
{
int a[] = { 9,1,2,0,7,4,8,6,3,5 };
cout << "排序前: " << endl;
printArr(a, 10);
insertSort(a, 10);
cout << "\n";
cout << "排序后: " << endl;
printArr(a, 10);
return 0;
}
4.运行结果