C 字符串数组排序 C 字符串数组排序的小例子
人气:0#include<stdio.h>
#include<string.h>
#include <malloc.h>
void q_sortB(char str[20][20], int n);
void qs(char str[20][20],int n);
void main() {
int i, n;
char str[20][20] = { { "Adam" }, { "Bob" }, { "Dimen" }, { "Colin" }, {
"Correal" }, { "Sick" }, { "Rachel" } };
char * str1[20]= { { "Adam" }, { "Bob" }, { "Dimen" }, { "Colin" },
{ "Correal" }, { "Sick" }, { "Rachel" } };
qs(str,7);
q_sortB(str, 7);
for (i = 0; i < 7; i++){
printf("%s\n", str[i]);
}
}
void qs(char str[20][20],int n){
char temp[20];
int i=0;
int j=0;
int min=i;
for(i=0;i<n-1;i++){
min=i;
for(j=i;j<n;j++){//本次找最小值的范围是从i开始 到最末尾
if( strcmp(str[j],str[min])==-1 ){
min=j;
}
}
//此时min指向最小的
//那么应该把min放在已排序部分的后一个//也就是本次排序的第一个
strcpy(temp,str[i]);
strcpy(str[i],str[min]);
strcpy(str[min],temp);
}
}
//泡泡
void q_sortB(char str[20][20], int n) {
char a[20];
int i, j;
for (i = 0; i < n-1; i++) {
for (j = i ; j < n-1; j++)
if (strcmp(str[j], str[j + 1]) > 0) {
strcpy(a, str[j]);
strcpy(str[j], str[j + 1]);
strcpy(str[j+1], a);
}
}
}
加载全部内容