两个n位二进制整数加起来的问题
主要处理一个进位问题
#include <stdio.h>
#include <stdlib.h>
int main(void){
int arr1[]={1,0,1};
int arr2[]={1,1,0};
int* num=(int*) malloc(sizeof(int) * 4);
num[0]=0;
int carry=0;
for(int i=2;i>=0;i--){
if((arr1[i]+arr2[i]+carry)>1){
num[i+1]=0;
carry=1;
}
if((arr1[i]+arr2[i]+carry)<=1){
carry=0;
num[i+1]=arr1[i]+arr2[i]+carry;
}
}
num[0]+=carry;
for(int i=0;i<4;i++)
printf("%d ",num[i]);
printf("\n");
return 0;
}
插入排序
插入排序可以想象为一副扑克牌,j为当前牌,我们从j=1开始迭代到n-1,
对j之前的每个数和arr[i]做比较,如果大于他,则向右移动覆盖,再用之前存的临时变量key赋值到i+1的位置。
#include <stdio.h>
int main(void){
int arr[]={1,5,2,4,9,6,7,0};
for(int j=1;j<8;j++){
int key=arr[j];
int i=j-1;
while(i>=0&&arr[i]>key){
arr[i+1]=arr[i];
i--;
}
arr[i+1]=key;
}
for(int i=0;i<8;i++){
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}