【C语言】第六篇·数组
来源:互联网 发布:恒生指数期货模拟软件 编辑:程序博客网 时间:2024/06/11 22:28
#include <stdio.h>void main(){int arry[10];int i,j,flag=-1;int temp; //存放某一次排序当中的最大数int count; //循环次数printf("请输入需要排序的10个数:\n");//输入数据for(i=0;i<10;i++){scanf("%d,",&arry[i]);}//输出数据printf("\n输入的数据分别为:\n");for(i=0;i<10;i++){printf("%d ",arry[i]);}printf("\n");//改进算法for(i=0;i<9;i++){ //n个数,最多循环n-1次,即可完成排序count=9; //防止出现越界:arry[9]>arry[10]flag=0;for(j=0;j<count;j++){if(arry[j]>arry[j+1]){temp=arry[j];arry[j]=arry[j+1];arry[j+1]=temp;flag=1;}}if(flag == 0) break; //此次循环中所有的数的位置没有发生改变,跳出循环count--; //下一次循环的时候,最后一个数已完成排序,没有必要在此进行比较}printf("\n按照由小到大的排序为:\n");for(i=0;i<10;i++){printf("%d ",arry[i]);}printf("\n");}
#include <stdio.h>void main(){int i,j;int arr[10];int minNum,col; //存储某次循环中的最小值和最小值的下标printf("输入10需要排序的数:\n");for(i=0;i<10;i++){scanf("%d,",&arr[i]);}printf("\n输入的10个数分别为:\n");for(i=0;i<10;i++){printf("%d ",arr[i]);}printf("\n\n");//选择排序for(i=0;i<9;i++){minNum=arr[i]; //记录当前循环第一个值和列号col=i;for(j=i+1;j<10;j++){if(arr[j] < minNum){col = j; //如果发现比minNum还要小的数,记录其列号和值minNum = arr[col];}}//当前循环的第一个值与最小值交换arr[col] = arr[i];arr[i] = minNum;}printf("10个数由小到大排序为:\n");for(i=0;i<10;i++){printf("%d ",arr[i]);}printf("\n");}
4.折半查找
#include <stdio.h>void main(){int i,j;int arr[10];int minNum,col; //存储某次循环中的最小值和最小值的列号int low,high,mid,num;printf("输入10需要排序的数:\n");for(i=0;i<10;i++){scanf("%d,",&arr[i]);}printf("\n输入的10个数分别为:\n");for(i=0;i<10;i++){printf("%d ",arr[i]);}printf("\n\n");//选择排序for(i=0;i<9;i++){minNum=arr[i]; //记录当前循环第一个值和列号col=i;for(j=i+1;j<10;j++){if(arr[j] < minNum){col = j; //如果发现比minNum还要小的数,记录其列号和值minNum = arr[col];}}//当前循环的第一个值与最小值交换arr[col] = arr[i];arr[i] = minNum;}printf("10个数由小到大排序为:\n");for(i=0;i<10;i++){printf("%d ",arr[i]);}printf("\n");while(1){ //程序改进:可以将条件改为while(low<=high) 下面的条件适当修改//折半查找printf("\n输入要查找的数:");scanf("%d",&num);printf("要查找的数为:%d\n",num);low = 1;high = sizeof(arr);mid = (low+high)/2;while(1){if(num > arr[mid-1]){low = mid+1;mid = (low+high)/2;}else if(num < arr[mid-1]){high = mid-1;mid=(low+high)/2;}else{printf("%d已经找到,是第%d个数!\n",arr[mid-1],mid);break;}if((low == high) && num != arr[mid-1]){ //当low和high的值相同,并且num与mid指向的值不相同时代表没有找到该数printf("%d在该序列中不存在!\n",num);break;}}}}
#include <stdio.h>int insertLoc(int arry[],int num){int low,high,mid;low=1;high=10;mid=(low+high)/2;while(low<=high){if(num>arry[mid-1]){low=mid+1;mid=(low+high)/2;}else if(num < arry[mid-2]){high=mid-1;mid = (low+high)/2;}else{return mid;break;}}return low; //当low == high时,不管num与中间数的大小关系,low始终指向要插入的位置,即:小则}void main(){int arr[11];int i,j;int num,loc;int insertLoc(int arry[],int num);printf("请输入10个有序的数:\n");for(i=0;i<10;i++){scanf("%d,",&arr[i]);}printf("\n输入的10个数分别为:\n");for(i=0;i<10;i++){printf("%d ",arr[i]);}printf("\n输入需要插入的数:");scanf("%d",&num);loc=insertLoc(arr,num);printf("插入的位置为:%d\n",loc);for(i=10;i>loc-2;i--){arr[i] = arr[i-1];}arr[loc-1]=num;printf("插入后的序列为:\n");for(i=0;i<11;i++){printf("%d ",arr[i]);}printf("\n");}
- 【C语言】第六篇·数组
- C语言第六章:数组
- [黑马IOS自学第六篇]C语言指针,数组指针,字符指针学习
- 程序设计与C语言学习笔记_第六章数组
- iOS笔记:第六篇 C语言 进制
- C语言入门第六篇,操作符
- C语言第六天
- C语言第六课
- C语言第六课
- 【C语言基础】C语言第六章
- C语言第六堂作业
- C语言第六节-指针
- C语言第六课 函数
- 标准C语言第六天
- c语言第六次练习题
- C语言之数组篇
- 090815c语言学习日记(嵌套循环,数组输入读取,函数返回值,第六章)
- 网易云课堂程序设计入门—C语言第六周 数组学习笔记
- 【C语言】第一篇·C语言概述和数据类型
- 【C语言】第二篇·输入输出和运算符
- 【C语言】第三篇·基本程序结构
- 【C语言】第四篇·函数调用
- 【C语言】第五篇·进制转换
- 【C语言】第六篇·数组
- 【C语言】第七篇·指针
- 【C语言】第八篇·内存管理和结构体
- 【C语言】第九篇·枚举、定义类型和宏定义
- 【C语言】第十篇·文件操作
- C语言通讯录
- 【OC语言】第一篇·Objective-C概述和面向对象
- 【OC语言】第二篇·对象的作用、字符串类型以及多文件开发
- 【OC语言】第三篇·类方法的使用、匿名类以及封装