选择排序介绍
选择排序 Selection sort,一个简单直观的排序算法。
选择排序原理
1.第一次从待排序的数组元素中选择出最小或者最大的一个元素,将其放到序列的起始位置。
2.从剩下的待排序元素中再次选择出最小或者最大的一个元素,将其放到已排序的序列的末尾。
3.重复第2步直至排序完成。
选择排序分析
选择排序算法的最好时间复杂度,最坏时间复杂度,平均时间复杂度都为O(n*n)
选择排序算法的空间复杂度为O(1)
选择排序算法是一个不稳定的排序算法:选择排序算法是给每个位置选择当前最小的或者最大的元素,在一趟选择中,如果一个元素比当前元素小,而该小的元素又出现在一个和当前元素相等的元素后面(如果一个元素比当前元素大同理),那么交换后两个相等元素的相对位置发生变化,稳定性就被破坏了。
选择排序适用于待排序序列中元素少的情况。在n小的时候,选择排序比冒泡排序快。
选择排序C#实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Selection_Sort
{
internal class Program
{
static void Main(string[] args)
{
int[] data = new int[8];
Console.WriteLine("原数组为:");
Random random = new Random();
for (int i = 0; i < data.Length; i++)
{
data[i] = random.Next(1, 500);
Console.Write(data[i] + " ");
}
Console.WriteLine();
Console.WriteLine("升序后数组为:");
// 升序
int temp;
for(int i = 0; i < data.Length; i++)
{
int min = i;
for (int j = i; j < data.Length; j++)
{
if (data[j] < data[min])
{
min = j;
}
}
temp = data[i];
data[i] = data[min];
data[min] = temp;
}
for(int i = 0; i < data.Length; i++)
{
Console.Write(data[i] + " ");
}
Console.ReadLine();
}
}
}