选择排序算法的设计与实现(要求统计排序时元素交换的次数)
收起
知与谁同
2018-07-20 18:22:05
1917
0
1
条回答
写回答
取消
提交回答
-
/*
================================================
功能:选择排序
输入:数组名称(也就是数组首地址)、数组中元素个数
================================================
*/
/*
====================================================
算法思想简单描述:
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环
到倒数第二个数和最后一个数比较为止。
选择排序是不稳定的。算法复杂度O(n2)--[n的平方]
=====================================================
*/
int select_sort(int *x, int n)
{
int i, j, min, t;int count=0;
for (i=0; i<n-1; i++) /*要选择的次数:0~n-2共n-1次*/
{
min = i; /*假设当前下标为i的数最小,比较后再调整*/
for (j=i+1; j<n; j++)/*循环找出最小的数的下标是哪个*/
{
if (*(x+j) < *(x+min))
{
min = j; /*如果后面的数比前面的小,则记下它的下标*/
}
}
if (min != i) /*如果min在循环中改变了,就需要交换数据*/
{
t = *(x+i);
*(x+i) = *(x+min);
*(x+min) = t; count++;
}
}return count;
}
其中count为交换的次数,排序完后将count返回;具体想了解各种排序算法的性能比较可以到这下载 http://download.csdn.net/source/1400524
2019-07-17 22:50:14