选择排序算法
选择排序大体思路是找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。选择排序的算法效率不是很高,时间复杂度O(n2) ,空间复杂度:O(1) 。
一、声明选择排序函数
#ifndef _ALG_H #define _ALG_H #include #include 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 *(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); }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。