当前位置: 首页> 健康> 科研 > 选择排序算法

选择排序算法

时间:2025/7/12 9:22:20来源:https://blog.csdn.net/fengchengwu2012/article/details/140497312 浏览次数:0次

        选择排序大体思路是找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。选择排序的算法效率不是很高,时间复杂度O(n2) ,空间复杂度:O(1) 。

一、声明选择排序函数

#ifndef  _ALG_H
#define  _ALG_H
#include <stdlib.h>
#include <stdio.h>typedef  unsigned int  DataField;void   show_data(DataField* data,int len);/***选择排序
*/
void  select_sort(DataField* data, int len);#endif

二、定义选择排序函数

#include "alg.h"void show_data(DataField *data, int len)
{printf("-----------------\n");int i = 0;for (i; i < len; i++){printf("%d\t",*(data+i));}printf("\n");
}void select_sort(DataField* data, int len)
{int i = 0;for (i; i < len - 1; i++){int min = i;int j;/// 每一轮循环找出剩余元素的最小值for (j = i + 1; j < len; j++){min = *(data + min) > *(data + j) ? j : min;}/// 将当前找到的最小值放到第i个元素的位置DataField temp = *(data + min);*(data + min) = *(data + i);*(data + i) = temp;}show_data(data,len);
}

三、测试排序结果

void  (*funPtr)(DataField*,int);int main()
{DataField arr[] ={ 19,29,49,69,99,39,9,79,89 };DataField* data = &arr[0];int len =  sizeof(arr)/sizeof(DataField);funPtr =  &select_sort;(*funPtr)(data,len);while (1) {}///getchar()exit(0);
}

关键字:选择排序算法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: