对指针数组采用两种排序方法,结果竟然不一样,求教大神

xr_zy1110 2016-01-27 05:07:02
#include <stdio.h>
#include <string.h>
int main()
{
void rankArr(char *pr[]);
char *p[]={"china","japan","tokyo","pairs","narry"};
int i;
for(i=0;i<5;i++)
printf("%s\n",p[i]);
rankArr(p);
for(i=0;i<5;i++)
printf("%s\n",p[i]);
return 0;
}
void rankArr(char *pr[]) // 比较法排序
{
char *temp;
int i , j ;
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
if(strcmp(pr[i],pr[j])>0);
{
temp=pr[j];
pr[j]=pr[i];
pr[i]=temp;
}
}
}
}

/*void rankArr(char *pr[]) //冒泡法排序
{
char *temp;//定义交换时存储临时变量的字符串单元
int i, j;
for( i=0;i<4;i++)//进行冒泡排序的外层循环
{
for( j=0;j<4-i;j++)//进行内层循环比较调换字符串
{
if(strcmp(pr[j],pr[j+1])>0)
{
temp=pr[j+1];
pr[j+1]=pr[j];
pr[j]=temp;
}//调用内置函数完成交换字符串
}
}
}*/
...全文
214 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xr_zy1110 2016-02-01
  • 打赏
  • 举报
回复
谢谢大家的帮助,我发现那个错误了,修改了发现是对的,就是问题出现在哪个;上
赵4老师 2016-01-29
  • 打赏
  • 举报
回复
各种排序算法动画演示http://www.webhek.com/misc/comparison-sort/
苏叔叔 2016-01-27
  • 打赏
  • 举报
回复
修改如下:

#include <stdio.h>
#include <string.h>
void rankArr(char *pr[], int n);
int main(){
	char *p[] = { "china","japan","tokyo","pairs","narry" };
	int i;
	printf("排序前\n");
	for (i = 0; i < 5; i++)
		printf("%s\n", p[i]);
	rankArr(p, 5);
	printf("排序后\n");
	for (i = 0; i < 5; i++)
		printf("%s\n", p[i]);
	return 0;
}
void rankArr(char *pr[], int n){
	char *tmp;
	int i, j, k;
	for (i = 0; i < n; i++){
		k = i;
		for (j = i + 1; j < n; j++){
			if (strcmp(pr[j], pr[k]) < 0) {
				k = j;
			}
		}
		if (k != i) {
			tmp = pr[i];
			pr[i] = pr[k];
			pr[k] = tmp;
		}
	}
}
苏叔叔 2016-01-27
  • 打赏
  • 举报
回复
排序前,请仔细理解各排序方法的原理: 选择排序 http://blog.csdn.net/zhangxiangdavaid/article/details/29844821 冒泡排序 http://blog.csdn.net/zhangxiangdavaid/article/details/30271613
anshiny 2016-01-27
  • 打赏
  • 举报
回复
楼上所言极是。
paschen 2016-01-27
  • 打赏
  • 举报
回复
这样这个if相当于是执行了一个空语句,而下面大括号中的内容不管判断结果是什么都会被执行
paschen 2016-01-27
  • 打赏
  • 举报
回复
if(strcmp(pr[i],pr[j])>0); 后面多了一个分号啊

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧