简单选择排序(c语言代码实现)

 选择排序:简单选择排序(不稳定的排序)

简单选择排序是一种基础的排序算法,它的基本思路是在未排序的序列中选择最小(或最大)的元素,将其与序列的第一个元素进行交换,然后在剩余的未排序序列中继续使用同样的方式进行选择和交换,直到整个序列排序完成。

以下是简单选择排序的实现过程:

  1. 从序列中选择最小的元素,将其与序列的第一个元素进行交换;

  2. 在剩下的未排序序列中继续进行选择,找到最小的元素,将其与序列的第二个元素进行交换;

  3. 依此类推,直到整个序列排序完成

时间复杂度:O(n^2) 。

空间复杂度:O(1) 。

下面我们来看一下代码如何实现

void selectsort(int a[],int sz)
{
	int i = 0;
	int j = 0;
	int min = 0;
	int temp = 0;
	for (i = 1; i < sz - 1; i++)//进行sz-1趟
	{
		min = i;//记录最小元素下标
		for (j = i + 1; j < sz; j++)//在i到sz-1中选择最小元素
		{
			if (a[j] < a[min])//更新最小元素的位置
				min = j;
		}
		if (min != i)
		{
			temp = a[min];
			a[min] = a[i];
			a[i] = temp;
		}
	}
}

完整测试代码

#include
void selectsort(int a[],int sz)
{
	int i = 0;
	int j = 0;
	int min = 0;
	int temp = 0;
	for (i = 1; i < sz - 1; i++)//进行sz-1趟
	{
		min = i;//记录最小元素下标
		for (j = i + 1; j < sz; j++)//在i到sz-1中选择最小元素
		{
			if (a[j] < a[min])//更新最小元素的位置
				min = j;
		}
		if (min != i)
		{
			temp = a[min];
			a[min] = a[i];
			a[i] = temp;
		}
	}
}
int main()
{
	int a[] = { 0,49,38,65,97,76,13,27 };
	int sz = sizeof(a) / sizeof(a[0]);
	int j = 0;
	printf("原始待排序的数组为:");
	for(j = 1; j < sz; j++)
		printf("%d ", a[j]);
	selectsort(a,sz);
	printf("\n简单排序后的数组为:");
	for (j = 1; j < sz; j++)
		printf("%d ", a[j]);
	return 0;
}

 

你可能感兴趣的:(排序,算法,数据结构,c语言)