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++实现

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

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

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

选择排序C++实现

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

C++单链表选择排序

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

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

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

冒泡排序:从数组的第一个元素开始(arr[0]),两两比较(arr[n],arr[n+1]),如果前面的数大于后面的数,则交换两个元素的位置,把大的数往后移动。经过一轮比较后,最大的数会被交换到最后的...

选择排序C语言实现

  • 2016-02-18 19:12
  • 977B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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