数据结构实战

    返回首页    发表留言
本文作者:李德强
          第五节 简单选择排序
 
 

        简单的选择排序原理为比较剩余未排序的记录,找到一个最小的与当前关键字互换位置。显然选择排序算法的性能优劣主要取决于选择最小关键字的位置,下面实现的是逐个查找其它关键字记录。当然,也可以使用前面我们所学习的其它查找算法,例如折半查找。

#include <stdio.h>

#define SIZE	(10)

//找到最小值
int min_ind(int *array, int size, int start)
{
	int index = -1;
	int t = -1;
	for (int i = start; i < size; i++)
	{
		if (i == start)
		{
			t = array[i];
			index = i;
		}
		//找到最小值并记录其位置
		if (array[i] < t)
		{
			t = array[i];
			index = i;
		}
	}
	return index;
}

//选择排序
void select_sort(int array[], int size)
{
	for (int i = 0; i < size; i++)
	{
		int ind = min_ind(array, size, i);
		//如果当前关键字小于最小值
		if (array[ind] < array[i])
		{
			//互换位置
			int t = array[i];
			array[i] = array[ind];
			array[ind] = t;
		}
	}
}

//显示数组
void display(int *array, int size)
{
	for (int i = 0; i < size; i++)
	{
		printf("%d ", array[i]);
	}
	printf("\n");
}

int main(int argc, char **args)
{
	int array[SIZE] =
	{ 5, 3, 7, 2, 9, 8, 1, 0, 6, 4 };
	display(array, SIZE);
	select_sort(array, SIZE);
	display(array, SIZE);

	return 0;
}

        运行结果:

5 3 7 2 9 8 1 0 6 4 
0 1 2 3 4 5 6 7 8 9 

        本例代码:

code path   chapter.08/e.g.8.5/

https       https://github.com/magicworldos/datastructure.git
git         git@github.com:magicworldos/datastructure.git
subverion   https://github.com/magicworldos/datastructure

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2018 问渠网 辽ICP备15013245号