寒假作业-day5

1>现有无序序列数组为23,24,12,5,33,5347,请使用以下排序实现编程
函数1:请使用冒泡排序实现升序排序
函数2:请使用简单选择排序实现升序排序
函数3:请使用直接插入排序实现升序排序
函数4:请使用插入排序实现升序排序

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void bubble(int a[],int n){
	for(int i=1;i<n;i++){
		for(int j=0;j<n-i;j++){
			if(a[j]>a[j+1]){
				int temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
}
void simple(int b[],int n){
	for(int i=0;i<n-1;i++){
		int min=i;
		for(int j=i+1;j<n;j++){
			if(b[min]>b[j])
				min=j;
		}
		if(min!=i){
			int temp=b[min];
			b[min]=b[i];
			b[i]=temp;
		}
	}
}
void dir_insert(int c[],int n){
	int j;
	for(int i=1;i<n;i++){
		int temp=c[i];
		for(j=i-1;j>=0&&c[j]>temp;j--){
				 c[j+1]=c[j];
		}
		c[j+1]=temp;
	}
}

int sort(int arr[],int low,int high){
	int key=arr[low];
	while(low<high)
	{
		while(low<high&&key<=arr[high])
			high--;
		arr[low]=arr[high];
		while(low<high&&key>=arr[low])
			low++;
		arr[high]=arr[low];
	}
	arr[low]=key;
	return low;
}
void quick(int arr[],int low,int high){
	if(low>=high)
		return;
	int mid=sort(arr,low,high);
	quick(arr,low,mid-1);
	quick(arr,mid+1,high);
}

void output(int arr[],int len){
	for(int i=0;i<len;i++)
		printf("%d\t",arr[i]);
	puts("");
}
int main(int argc,const char *argv[]){
	int a[]={23,24,12,5,33,5,34,7};
	int len=sizeof(a)/sizeof(a[0]);
	bubble(a,len);
	output(a,len);
	int b[]={23,24,12,5,33,5,34,7};
	simple(b,len);
	output(b,len);
	int c[]={23,24,12,5,33,5,34,7};
	dir_insert(c,len);
	output(c,len);
	int d[]={23,24,12,5,33,5,34,7};
	quick(d,0,len-1);
	output(d,len);
	return 0;
}

结果:

2>请编程实现
写个递归函数 DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如:调用 DigitSum(1729),则返回 1+7+2+9,它的和是 19
输入1729,输出 19

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int DigitSum(int n){
	if(n==0)
		return 0;
	int temp=n;
	temp%=10;
	n/=10;
	return temp+DigitSum(n);
}

int main(int argc,const char *argv[]){
	int num=1729;
	printf("%d\n",DigitSum(num));
	return 0;
}

结果:

3>请编程实现
写一个宏,可以将一个 int 型整数的二进制位的奇数位和偶数位交换

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SWAP_BIT(n) (n=((n&0xaaaaaaaa)>>1)+((n&0x55555555)<<1))

int main()
{
	int a = 10;
	//00000000000000000000000000001010 ->10
	// 其奇偶位交换后得 :
	//00000000000000000000000000000101 ->5
	SWAP_BIT(a);
	printf("a=%d\n", a);
	return 0;
}

结果:

相关推荐

  1. 寒假作业2月5

    2024-02-08 01:52:04       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-08 01:52:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-08 01:52:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-08 01:52:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-08 01:52:04       18 阅读

热门阅读

  1. Lua编译与运行

    2024-02-08 01:52:04       31 阅读
  2. 【算法题】92. 反转链表 II

    2024-02-08 01:52:04       27 阅读
  3. 分支解决冲突 & 分支管理策略 git merge命令详解

    2024-02-08 01:52:04       31 阅读
  4. 【Git】三棵“树”介绍

    2024-02-08 01:52:04       34 阅读
  5. (39)统计位数为偶数的数字

    2024-02-08 01:52:04       36 阅读
  6. work day7

    2024-02-08 01:52:04       28 阅读
  7. PyTorch自动微分模块torch.autograd的详细介绍

    2024-02-08 01:52:04       31 阅读
  8. 蓝桥杯-“山”形数字个数(python版)

    2024-02-08 01:52:04       33 阅读