算法——冒泡排序、选择排序、插入排序的算法思想+C++代码实现+时间空间复杂度

本文详细介绍了冒泡排序、选择排序和插入排序的算法思想,包括C++代码实现。冒泡排序通过重复遍历序列比较并交换相邻元素来排序,选择排序则在每趟中选取最小元素放入已排序序列,而插入排序通过构建有序表逐步将元素插入合适位置。三种排序的时间复杂度和空间复杂度也进行了讨论。
摘要由CSDN通过智能技术生成

一、冒泡排序


1、排序思想:假设对N个数进行排序,他们的位置分别是0、1、2....、N-1。首先比较0和1位置上的元素,如果0位置上的元素大于1位置上的元素,则交换两个位置上的元素,否则不做调整;接着比较1位置上和2位置上的元素,如果1位置上的元素大于2位置上的元素,则交换两个位置上的元素,否则不交换;..........;最后比较N-2和N-1位置上的元素,如果N-2位置上的元素大于N-1位置上的元素,则交换两个位置上的元素,这样经过一趟排序,最大的数就在N-1位置上。接着在0-N-2位置上继续遍历找出第二大的数放在N-2位置上,以此类推,从而得到一个升序排序序列。

2、代码实现

#include<iostream>
using namespace std;

template<typename T>
void bubble_sort(T list[], int len)     //冒泡升序排序
{
	for (int i = len - 1; i > 0; i--)
	{
		for (int j = 0; j < i; j++)
		{
			if (list[j] > list[j + 1])
				bubble_swap(list[j], list[j + 1]);
		}
	}
}

template<typename T>   //使用到T的地方都需要加template
void bubble_swap(T &x, T &y)   //交换两个位置上的元素
{
	T temp;
	temp = x;
	x = y;
	y = temp;
}

int m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值