关闭

c++实现选择排序

标签: 数据结构cc++选择排序
117人阅读 评论(0) 收藏 举报
分类:

选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。

平均时间复杂度:O(n2)

空间复杂度:O(1)  (用于交换和记录索引)

稳定性:不稳定 (比如序列【5, 5, 3】第一趟就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)

//选择排序的最大时间代价,最小时间代价和平均时间代价均为θ(n²)。选择排序不依赖于原始数组的输入顺序。
#include <iostream>
using namespace std;
void swap(int array[], int i, int j)
{
	int temp = array[i];
	array[i] = array[j];
	array[j] = temp;
}
void SelectSort(int arr[], int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int smallest = i;
		for (int j = i + 1; j < n - 1; j++)
		{
			if (arr[j] < arr[smallest])//每次循环都选出最小的元素的下标,
				smallest = j;  //依次和第i个元素交换
		}
		swap(arr, i, smallest);
	}
}
	void main()
	{
		int arr[10];
		cout << "请输入要排序的元素:" << endl;
		for (int i = 0; i < 10; i++)
		{
			cin >> arr[i];
		}
		//cout << "排序前的无序数组元素" << arr[i] << endl;
		SelectSort(arr, 10);
		cout << "排序后的数组元素" << endl;
		for (int i = 0; i < 10; i++)
		{
			cout<< arr[i]<<endl;
		}
		system("pause");
	}


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:44786次
    • 积分:1156
    • 等级:
    • 排名:千里之外
    • 原创:68篇
    • 转载:37篇
    • 译文:0篇
    • 评论:5条
    最新评论