c++实现选择排序

原创 2016年05月31日 17:17:18

选择排序:比如在一个长度为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");
	}


版权声明:本文为博主原创文章,未经博主允许不得转载。

经典算法与数据结构的c++实现——直接选择排序

因为是经典的算法,所以网上描述一大把,直接上个图,直观些,给记性不好的菜鸟(如我)一点儿提示。 算法很简单,遍历整个数组,依次选取最小值放到数组前面。 下面是代码(欢迎批评指点,之后应该会放到gi...
  • y277an
  • y277an
  • 2016年03月19日 08:47
  • 829

选择排序C++实现

算法描述: 首先找到数组中最小的元素,将它与数组第一个元素进行交换,接着在剩下的元素中找的最小的元素与数组第二个元素进行交换,如此往复,直到整个数组都排序。 下面给出整型数组的实现,其他复杂类型只需实...

C++ 选择排序算法的实现与改进(含笔试面试题)

选择排序(Selection sort)也是一种最简单直观的排序算法。 算法步骤 1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 2)再从剩余未排序元素中继续寻找最小(大)元...

C++单链表选择排序

  • 2007年12月18日 06:01
  • 2KB
  • 下载

【排序算法】选择排序(C++实现)

选择排序算法就是每一趟从待排序的记录中选出关键字最小(最大)的记录,顺序放在已排好序的子文件的最后(最前),直到全部记录排序完毕。常见的选择排序有直接选择排序(Selection Sort),堆排序(...
  • left_la
  • left_la
  • 2013年03月10日 16:01
  • 14944

C#简单实现泛型选择排序

  • 2017年04月30日 12:26
  • 37KB
  • 下载

【算法和数据结构】排序(二)选择排序(C++实现)

【算法和数据结构】1.2.1–排序算法之选择排序(C++实现)总述:选择排序(Selection Sort)作为一种简单的排序算法,应用非常广泛。下面就以从小到大排序某序列为例,介绍其基本原理:1. ...

冒泡排序和选择排序(C++实现)

冒泡排序:从数组的第一个元素开始(arr[0]),两两比较(arr[n],arr[n+1]),如果前面的数大于后面的数,则交换两个元素的位置,把大的数往后移动。经过一轮比较后,最大的数会被交换到最后的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++实现选择排序
举报原因:
原因补充:

(最多只允许输入30个字)