选择排序是一种简单直观的排序算法,基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。n个元素的数列,需要n-1趟直接排序。

排序过程:

  1. 拿第1个元素,依次与后面的其他元素逐个比较,找出最小(最大)的元素,放到下标为0的位置。
  2. 经过第1步,数列的第一个必然是最小(最大)的元素。
  3. 拿第i个元素,依次与后面的其他元素逐个比较,找出最小(最大)的元素,放到下标为i-1的位置。
  4. 重复第3步(除了最后一个),每一次都会有一个最小(最大)的元素被找出,放在对应的下标位置。
  5. 直到每轮比较不再有可交换的元素。
  6. 排序完成。

       排序算法-基本选择排序

   算法分析:

         基本选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数永远都是N (N - 1) / 2。而移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0。当序列反序时,移动次数最多,为3N (N - 1) /  2。所以,综上,简单排序的时间复杂度为 O(排序算法-基本选择排序)。

    算法实现:

     c语言:

#include <stdio.h>

int main()
{
	int n;
	scanf("%d",&n);
	int num[n];
	int i;
	for(i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
	}
	int j,t;
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(num[i]>num[j])
			{
				t = num[i];
				num[i] = num[j];
				num[j] = t;
			}
		}
	}
	
	for(i=0;i<n;i++)
	{
		printf("%d ",num[i]);
	}
	
	return 0;
} 

 

相关文章:

  • 2022-01-08
  • 2021-10-21
  • 2021-12-02
  • 2021-06-22
  • 2021-11-05
猜你喜欢
  • 2021-10-28
  • 2021-08-05
  • 2022-12-23
  • 2022-12-23
  • 2021-09-30
  • 2021-11-27
  • 2021-11-27
相关资源
相似解决方案