解题思路:
本答案是可以随意输入9个没有排序的元素,用选择排序法排序;
然后用二分查找插入排序决定第十个元素的位置;
希望对大家有用!
注意事项:
本题的创新点在于用宏定义来决定数组的大小,如#define getlen(array,len){len=sizeof(array)/sizeof(array[0]);} 这样设置智能,但在这里鸡肋
参考代码:
#include <stdio.h> #define getlen(array,len){len=sizeof(array)/sizeof(array[0]);} //宏定义数组长度 int main() { //selection sort int a[9]; int len,newone; getlen(a,len); for(int i=0;i<len;i++){ scanf("%d",&a[i]); } int min,swap,temp; for(int i=0;i<len;i++){ min=a[i]; temp=i; for(int j=i+1;j<len;j++){ if(min>=a[j]){ min=a[j]; temp=j; } } swap=a[i]; a[i]=a[temp]; a[temp]=swap; } scanf("%d",&newone);//新输入待排序元素 int low=0, high=len-1; //二分查找插入排序 int mid; while(low<=high){ mid=(high+low)/2; if(newone<a[mid]){ high=mid-1; }else low=mid+1; } if(newone>a[mid]){//非常重要,决定新插入元素在mid的前面还是后面 mid++; } int b[10]; for(int i=0;i<len;i++){//新数组插入新元素 if(i<mid){ b[i]=a[i]; }else{ b[i+1]=a[i]; } } b[mid]=newone; int b_len; getlen(b,b_len); for(int i=0;i<b_len;i++){ printf("%d\n",b[i]); } //getch(); return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:641 |
母牛的故事 (C语言代码)浏览:478 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:503 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:583 |
矩阵加法 (C语言代码)浏览:1768 |
A+B for Input-Output Practice (V) (C语言代码)浏览:497 |
矩形面积交 (C++代码)浏览:1204 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:953 |
C语言训练-亲密数 (C语言描述,反正怎么都能对)浏览:2256 |
蛇行矩阵 (C语言代码)浏览:559 |