插入排序的三种方法(c++)

在一个从小到大排序的数组里插入一个数字

1.

#include <iostream>
using namespace std;
int main()
{
	int a[6] = { 1,3,6,7,8 };
	int x;
	cout << "请输入需要插入的数字" << endl;
	cin >> x;
	int i = 0;
	for (; i < 5; i++)
	{
		if (a[i] > x)//遍历数组,若数组元素比插入的数字大立马跳出循环
			break;
	}
	for (int j = i; j <= 5; j++)
	{
		int y = a[j];//定义一个变量等于跳出的数组元素
		a[j] = x;//插入数字
		x = y;//再赋值原本的数字,循环排列完后面的数字
	}
	for (i = 0; i < 6; i++)
		cout << a[i] << " ";
}

2.

#include <iostream>
using namespace std;
int main()
{

	int a[6] = { 1,3,4,6,7 };//数组一
	int x;
	cout << "请输入需要插入的数字" << endl;
	cin >> x;
	int b[6];//新定义一个元素相同的数组,数组二
	int i;
	for (i = 0; i < 5; i++)//遍历数组
	{
		if (a[i] < x)//如果元素小于要插入的数字,就把数组一赋值给新定义的数组二
			b[i] = a[i];
		else break;//否则跳出循环
	}b[i] = x;//插入数字
	for (int j = i; j < 5; j++)//遍历数组,数组一剩下的元素赋给数组二
		b[j + 1] = a[j];
	for (i = 0; i < 6; i++)
		cout << b[i] << " ";



}

3.

​

#include <iostream>
using namespace std;
int main()
{
	int a[6] = { 1,3,4,6,7 };
	int i;
	int x;
	cout << "请输入需要插入的数字" << endl;
	cin >> x;
    for (i = 4; i >= 0; i--)//从后向前推进
	{
		if (a[i] > x)
			a[i + 1] = a[i];//一个个往后推顶后面的位置
		else break;
	}a[i+1] = x;//跳出后空位马上插入数字
	for (i = 0; i < 6; i++)
		cout << a[i] << " ";

}

[点击并拖拽以移动]
​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
选择排序插入排序都是常见的排序算法。 选择排序是一种简单直观的排序算法。它的基本思想是每一次从待排序据中选择最小(或最大)的元素,放到已排序序列的末尾。具体的实现过程是,首先找到未排序部分的最小元素,然后将其与未排序部分的第一个元素交换位置,然后再从剩余的未排序部分中找到最小元素,依次类推,直到所有的元素都排序完成。 插入排序也是一种简单直观的排序算法。它的基本思想是将待排序据分成已排序和未排序两部分,初始时已排序部分只有一个元素。然后依次将未排序部分的元素插入到已排序部分的合适位置,直到所有的元素都插入完成。具体的实现过程是,将待插入的元素与已排序部分的元素逐个比较并移动,直到找到合适的位置插入。 选择排序的代码可以参考引用中的直接选择排序代码示例,其中使用了两个for循环来实现选择排序的过程。 插入排序的代码可以参考引用中的选择排序代码示例,其中同样使用了两个for循环来实现插入排序的过程。 需要注意的是,选择排序插入排序都是简单的排序算法,对于小规模的据集来说效果良好,但对于大规模据集来说,其时间复杂度较高,效率较低。在实际应用中,可以考虑使用更高效的排序算法,如快速排序、归并排序等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【据结构】常见排序插入排序与选择排序](https://blog.csdn.net/vpurple_/article/details/126568614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [C++ 冒泡排序/选择排序/插入排序/快速排序/希尔排序](https://blog.csdn.net/jolin678/article/details/128269096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值