2015.3.11
今天阿里面试,最后给我出了一个算法题,如下:
一个数组字符串,对其中的字符串进行排序,排序规则如下:长度越小越排在前面,长度相同则按照字符串大小排序。举个例子:“a”,"ab","Ab","b","abc",排序后 : a, b, Ab, ab, abc。
和室友讨论一下,由他想出了如下的方法:按照字符串的每一位进行排序,提前结束的字符串在相应位比较时总是最小。完成后,得到的结果也便是我们想要的了。
具体代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 #define N 20 5 6 void strSort(char s[][N], int n) 7 { 8 int i,j, k = 0; 9 char tmp[N]; 10 int maxlen = 0; 11 for(i = 0; i < n; ++i) 12 { 13 if(maxlen < strlen(s[i])) 14 maxlen = strlen(s[i]); 15 } 16 while(k < maxlen) 17 { 18 for(i = 1; i < n; ++i) 19 { 20 strcpy(tmp, s[i]); 21 j = i - 1; 22 for(;;) 23 { 24 if(tmp[k] == '