选择排序法,排序数字或者字符串

来源:互联网 发布:软壳冲锋衣 知乎 编辑:程序博客网 时间:2024/05/17 02:38
/*选择排序的思路:选择排序相比于冒泡排序,减少了交换次数,一般情况下冒泡每次比较符合交换要求时都要交换,而选择排序是不断的记录下标,保留最小数或者最大数的下标,在里层循环结束后再进行交换,减少了交换次数具体方法:遍历一次,记录下最值元素所在的位置,遍历结束后将此最值元素调整到合适位置,这样遍历一次,只需要交换一次,便可将最值放置到合适位置*/#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int selectSort(int *arr,int len){if (arr == NULL || len < 0){return -1;}for (int i = 0; i < len - 1; i++){int min = i;for (int j = i + 1; j < len; j++){if (arr[min]>arr[j]){min = j;}}if (min != i){int temp = arr[i];arr[i] = arr[min];arr[min] = temp;}}return 0;}int selectSortString(char *str[], int len){if (str == NULL || len < 0){return -1;}for (int i = 0; i < len - 1; i++){int index = i;for (int j = i + 1; j < len; j++){if (strcmp(str[index], str[j]) > 0){index = j;}}if (index != i){char *temp = str[i];str[i] = str[index];str[index] = temp;}}return 0;}void test(){int ret = 0;int arr[] = { 5, 7, 3, 45, 86, 2 };int len = sizeof(arr) / sizeof(int);ret = selectSort(arr, len);for (int i = 0; i < len; i++){printf("%d ", arr[i]);}}void test1(){char *str[] = { "bbb", "ccc", "aaa", "ttt" };int len = sizeof(str) / sizeof(char *);selectSortString(str, len);for (int i = 0; i < len; i++){printf("%s\n", str[i]);}}void main(){test();test1();system("pause");}

0 0