vlambda博客
学习文章列表

整数排序(指针+选择排序)

不点蓝字,我们哪来故事?




Life is not a director, but every one of us is like an actor, acting in a way that is in order.

生活本没有导演,但我们每个人都像演员一样,为了合乎剧情而认真地表演着。



掏心话:大佬级别的人很多,我们不必妄自菲薄,也不必高估自己,在前进的路上,望不负岁月。


今天分享一下做题的小心得,在解用指针给整数排序时本来是用选择排序法即可解题的,不过后来因为有Bug也弄了一晚上,原因是指针没回位。


指针没回位造成的结果便是排序不成功,即输入和输出一样。感兴趣的可以在下面代码第十一行去掉试一下。


任务描述

输入3个整数,按由大到小的顺序输出。(要求用指针方法处理)

测试输入:

66 77 88

预期输出:

88 77 66


源代码:

#include<stdio.h>#define k 3int main() { int a[k], n, i, temp; int *p; p=a; for (n = 0; n < k; n++) { scanf("%d", p++); } for (n = 0; n < k - 1; n++) { p=a;//回位!!! for (i = n + 1; i < k; i++) { if (*(p + i) > *(p + n)) { temp = *(p + n); *(p + n) = *(p + i); *(p + i) = temp; } } } p = a; for (n = 0; n < k; n++,*p++) { if (n == k - 1) { printf("%d", *p); break; } else { printf("%d ",*p); } } return 0;}


运行结果:


整数排序(指针+选择排序)

往期推荐:

1.


一个正在学习C语言的人,致力于将C讲得更透彻!

点赞关注~谢谢你~

长按下图二维码关注,和你一起领悟程序员的魅力。



点“在看你懂得