一、选择排序思路:
1.1 例如从小到大排序
1.1.1 开始设定最小值下标为i;
1.1.2 从j=i+1的位置起寻找真实最小值下标;
1.1.3 判断设定最小值下标i对应元素是否为最小,若不是则更新最小值下标;
1.1.4 判断真实最小值下标是否与最初设定的最小值下标i相同,若不同交换元素,相同不做更改。
二、实现代码
1.选择排序代码(数字)
#define _CRT_SECURE_NO_WARNINGS #include#include #include void Print01(int arr[], int len) { for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("n"); } void Selectsort01(int arr[], int len) { int i = 0; for (i = 0; i < len; i++) { int min = i;//设定最小值下标 for (int j = i + 1; j < len; j++) { //判断设定最小值下标对应元素是否为最小 if (arr[min] > arr[j]) { //更新真实最小值下标 min = j; } } //判断真实最小值下标是否与最初设定的i相同,若不同交换元素,相同不做更改 if (i != min) { int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } } void test01() { int arr[5] = { 5,2,1,4,3 }; int len = sizeof(arr) / sizeof(arr[0]); Selectsort01(arr, len);//选择排序 Print01(arr, len);//打印 } int main() { test01(); system("pause"); return 0; }
2.选择排序代码(字符串)
注意strcmp函数的使用
int strcmp( const char *string1, const char *string2 );
具体代码:
#define _CRT_SECURE_NO_WARNINGS #include#include #include void Print02(char** parray, int len) { for (int i = 0; i < len; i++) { printf("%s ", parray[i]); } printf("n"); } void Selectsort02(char* parray[],int len) { int i = 0; for (i = 0; i < len; i++) { int min = i; for (int j = i + 1;j< len; j++) { if(strcmp(parray[min], parray[j]) > 0) { min = j; } } if (i != min) { char* temp = parray[i]; parray[i] = parray[min]; parray[min] = temp; } } } void test02() { char* parray[] = { "aaa","eee","ddd","ccc","bbb" }; int len = sizeof(parray) / sizeof(char*); Selectsort02(parray, len); Print02(parray, len); } int main() { test02(); system("pause"); return 0; }



