3.用指针编写编写程序:使用插入排序法将十个数从小到大进行排序
这个程序最后为什么无法执行
#include"stdio.h"
void main()
{ int a[10]={2,1,3,4,7,5,6,8,9,0},j,k,*p;
for(p=a+1;p=a;j--)
{ if (a[j]>k) a[j+1]=a[j];
else break;}
a[j+1]=k;
}
for(p=a;p=a+10;p++)
printf("%d",*p);
}
1条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
这段代码无法运行的原因是因为插入排序的算法实现不完整,缺少了一些关键步骤。以下是完整的插入排序算法实现以及代码示例: 插入排序算法:- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤2~5 代码示例: #include <stdio.h> void insertion_sort(int a[], int n) { int i, j, k; for (i = 1; i < n; i++) { k = a[i]; for (j = i - 1; j >= 0 && a[j] > k; j--) { a[j + 1] = a[j]; } a[j + 1] = k; } } int main() { int a[10] = {2, 1, 3, 4, 7, 5, 6, 8, 9, 0}; int i; insertion_sort(a, 10); for (i = 0; i < 10; i++) { printf("%d ", a[i]); } return 0; } 输出结果为:0 1 2 3 4 5 6 7 8 9 注:以上代码仅为示例,请勿照搬照抄。在实际应用中,需要根据具体情况进行适当的改动。
解决 无用评论 打赏 举报