1.第一种题型
(1)打擂算法
#include<stdio.h>
#define N 10
int main()
{
int a[N],max;
printf("请输入十个数:");
for(int i=0;i<N;i++){
scanf("%d",&a[i]);//一定要有&符号
};
max=a[0];
for(int i=0;i<N;i++){
if(max<a[i]){
max = a[i];
};
};
printf("%d",max);
}
(2)二分查找法
有一个前提:这个数列必须是有序的
#include<stdio.h>
int aSearch(int arr[],int a,int len);
int main(){
int arr[10] = {10,30,45,47,54,57,60,79,89,90};
int len = sizeof(arr)/sizeof(int);
int a=0;
printf("请输入你要查找的值:\n");
scanf("%d",&a);
int num;
num = aSearch(arr,a,len);
if(num != -1){
printf("你要查找的数下标是:%d",num);
}else{
printf("你要找的数不再本数值内。");
}
return 0 ;
}
int aSearch(int arr[],int a,int len){
int left=0,right=10-1;
while(left <= right){
int mid = (left+right)/2;
if(arr[mid]==a){
return mid;
} else if(arr[mid]<a){
left = mid+1;
}else if(arr[mid]>a){
right = mid-1;
}
}
return -1;
}
(3)冒泡排序
#include<stdio.h>
void Sort(int arr[],int size){
int j,i,temp;
for(int i=0;i<size-1;i++){
int count = 0;
for(int j=0;j<size-1-i;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
count = 1;
}
}
if(count = 0){
break;
}
}
}
int main(){
int arr[10];
int i;
int a;
printf("请输入10个数:\n");
for(i=0;i<10;i++){
scanf("%d",&a);
arr[i]=a;
}
int size = sizeof(arr)/sizeof(int);
Sort(arr,size);
for(i=0;i<size;i++){
printf("%d\n",arr[i]);
}
return 0;
}
(4)简单选择排序
#include<stdio.h>
void Sort(int arr[],int size){
int temp=0;
int min;
for(int i=0;i<size;i++){
min = i;
for(int j=i+1;j<size;j++){
if(arr[j]<arr[min]){
min = j;
}
}
if(min!=i){
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}
int main(){
int arr[10];
printf("请输入你要排序的数组:\n");
int size = sizeof(arr)/sizeof(int);
int a;
for(int j=0;j<size;j++){
scanf("%d",&a);
arr[j] = a;
}
Sort(arr,size);
for(int i=0;i<size;i++){
printf("%d\n",arr[i]);
}
}
(4)数组插入
#include<stdio.h>
//我们假设数组是有序的
int main() {
int arr[]={1,2,3,5,6,7,8};
int len = sizeof(arr)/sizeof(int);
int a = 0;
// int arr_new[len+1];
printf("请输入你要插入的值:");
scanf("%d",&a);
int temp = 0;
for(int i=0;i<len;i++){
if(arr[i]>a){
temp=i;
break;
}
}
for(int j=len;j>temp;j--){
arr[j] = arr[j-1];
}
arr[temp] = a;
for(int i;i<8;i++){
printf("%d",arr[i]);
}
}
(5)数组删除
#include<stdio.h>
int main(){
int arr[] = {1,2,3,4,5,6,7,8};
int len = sizeof(arr)/sizeof(int);
int a;
printf("请输你要删除的数字:");
scanf("%d",&a);
// printf("%d",a);
int index;
for(int i=0;i<len;i++){
if(arr[i] == a){
index = i;
break;
}
}
// printf("%d",index);
for(int j=index;j<len;j++){
arr[j]=arr[j+1];
}
for(int i;i<len-1;i++) {
printf("%d\n",arr[i]);
}
}