1° 选择排序算法
以字符串排序进行说明
#include <stdio.h> #include <string.h> #define SIZE 81 #define LIM 20 #define HALT " " void stsrt(char *strings[], int num); int main(void) { char input[LIM][SIZE]; char *ptstr[LIM]; int ct = 0; int k; printf("Input up %d lines, and I will sort them.\n", LIM); printf("To stop, press the Enter key at a line‘s start.\n"); while(ct < LIM && gets(input[ct]) != NULL && input[ct][0] != ‘\0‘) { ptstr[ct] = input[ct]; ct++; } stsrt(ptstr, ct); puts("\nHere‘s the sorted list: \n"); for(k = 0; k < ct; k++) puts(ptstr[k]); return 0; } void stsrt(char *strings[], int num) { char *temp; int top, seek; for(top = 0; top < num - 1; top++) for(seek = top + 1; seek < num; seek++) if(strcmp(strings[top], strings[seek]) > 0) { temp = strings[top]; strings[top] = strings[seek]; strings[seek] = temp; } }
核心思想:(查找和放置)选择剩余最大值的一个办法就是比较剩余数组的第一和第二个元素。如果第二个元素大,就交换这两个数据。想在比较第一个和第三个元素。如果第三个大,就交换这两个数据。每一次交换都把大的元素移到上面。继续这种方法,直到比较第一个和最后一个元素。完成以后,最大的数就在剩余数组的第一个元素中。此时第一个元素已经排好了序,但是数组中的其他元素还很混乱。
原文:http://www.cnblogs.com/yerenyuan/p/5068868.html