黑马程序员技术交流社区

标题: C语言学习笔记之字符串排序的两种方法 [打印本页]

作者: chunhuayun    时间: 2015-9-27 21:12
标题: C语言学习笔记之字符串排序的两种方法
输入5个国家的名字并按照字母顺序排序后输出

代码实现如下
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. //冒泡排序法
  5. void sortByBulle(char * names[], int len){
  6.     char *temp = names[0];
  7.    
  8.     for (int i = 0; i < len -1; i++) {
  9.         
  10.         for (int j = 0; j < len - 1 - i; j++) {
  11.             if (strcmp(names[j], names[j + 1]) > 0) {
  12.                 temp = names[j];
  13.                 names[j] = names[j + 1];
  14.                 names[j + 1] = temp;
  15.             }
  16.         }
  17.     }
  18. }
  19. //选择排序法
  20. void sortBySelection(char * names[], int len){
  21.     char *temp = NULL;

  22.     for (int i = 0; i < len - 2; i++) {
  23.         for (int j = i + 1; j < len; j++) {
  24.             if (strcmp(names[i], names[j]) > 0) {
  25.                 temp = names[i];
  26.                 names[i] = names[j];
  27.                 names[j] = temp;
  28.             }
  29.         }
  30.     }
  31. }

  32. int main(int argc, const char * argv[])
  33. {
  34.     int len = 8;
  35.     char *names[] = {"CHINA","AFRICA","KOREA","AMERICA","FRANCE","INDIA","BRITAIN","AUSTRALIA"};
  36.     sortByBulle(names, len);
  37.     printf("Bulle sort:\n");
  38.     for (int i = 0; i < len; i++) {
  39.         printf("%s\n", *(names+i));
  40.     }
  41.    
  42.     char *names2[] = {"CHINA","AFRICA","KOREA","BRITAIN","FRANCE","INDIA","AMERICA","AUSTRALIA"};
  43.     printf("Selection sort:\n");
  44.    
  45.     sortBySelection(names2, len);
  46.     for (int i = 0; i < len; i++) {
  47.         printf("%s\n", *(names2 + i));
  48.     }
  49.     return 0;
  50. }
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2