寒假作业:2024/2/6

作业1:编程实现数组排序

1.1冒泡排序

函数代码:

#include 
#include 
#include 
/*
 * function:    冒泡排序
 * @param [ in] 
 * @param [out] 数组,数组长度
 * @return      无
 */
void Bubble(int *p,int n)
{
	for(int i=1;i*(p+j+1))
			{
				int t=*(p+j);
				*(p+j)=*(p+j+1);
				*(p+j+1)=t;
			}
		}
	}
}

1.2简单选择排序

函数代码:

/*
 * function:    简单选择排序
 * @param [ in] 
 * @param [out] 数组,长度
 * @return      无
 */
void Simple(int *p,int n)
{
	for(int i=0;i*(p+j))
			{
				min=j;
			}
		}
		if(min!=i)
		{
			int t=*(p+i);
			*(p+i)=*(p+min);
			*(p+min)=t;
		}
	}
}

1.3直接插入排序

函数代码:

/*
 * function:    直接插入排序
 * @param [ in] 
 * @param [out] 数组,长度
 * @return      无
 */
void inster_sort(int *p,int n)
{
	int j;
	for(int i=1;i=0;j--)
		{
			if(*(p+j)>t){
				*(p+j+1)=*(p+j);
			}else{
				break;
			}
		}
		*(p+j+1)=t;
	}
}

1.4快速排序

函数代码:

/*
 * function:    快速排序
 * @param [ in] 
 * @param [out] 数组,low,high
 * @return      无
 */
//返回基准值下标
int one_sort(int *p,int low,int high)
{
	//确定一个基准值
	int key=*(p+low);
	while(low=*(p+low))
		{
			low++;
		}
		*(p+high)=*(p+low);
	}
	*(p+low)=key;
	return low;
}
void Quick_sort(int *p,int low,int high)
{
	if(low>=high)
		return;
	//一次排序,确定基准值下标
	int mid=one_sort(p,low,high);
	//递归左子序列
	Quick_sort(p,low,mid-1);
	//递归右子序列
	Quick_sort(p,mid+1,high);
}
/*
 * function:    遍历排序后的数组
 * @param [ in] 
 * @param [out] 数组,长度
 * @return      无
 */
void output(int *p,int n)
{
	for(int i=0;i

效果图:

寒假作业:2024/2/6_第1张图片

作业2:递归编程计算数字各个位之和

例如:调用DigitSum(1729),则返回1+7+2+9,和是19,输入1729,输出19

代码:

#include 
#include 
#include 
int DigitSum(int num)
{
	if(num==0){
		return 0;
	}else{
		return num%10+DigitSum(num/10);
	}
}
int main(int argc, const char *argv[])
{
	int num;
	printf("please enter num:");
	scanf("%d",&num);
	int sum=DigitSum(num);
	printf("sum=%d\n",sum);
	return 0;
}

效果图:

寒假作业:2024/2/6_第2张图片

作业3:写一个宏,将一个int型整数的二进制位的奇数位和偶数位交换

代码:

#include 
#include 
#include 
#define SWAP(num) (((num&0xaaaaaaaa)>>1) | ((num & 0x55555555)<<1))
int main(int argc, const char *argv[])
{
	int num;
	printf("please enter num:");
	scanf("%d",&num);//8
	//8----->00000000 00000000 00000000 00001000
	//       10101010 10101010 10101010 10101010 --> 0xaaaaaaaa
	//       &
	//       00000000 00000000 00000000 00001000
	//       >>1
	//   a   00000000 00000000 00000000 00000100 交换奇数位与偶数位
	printf("%d\n",SWAP(num));//4
	//8----->00000000 00000000 00000000 00001000
	//       01010101 01010101 01010101 01010101 --> 0x55555555
	//       &
	//       00000000 00000000 00000000 00000000
	//       <<1
	//   b   00000000 00000000 00000000 00000000 交换奇数位与偶数位
	//   a | b
	//   	 00000000 00000000 00000000 00000100 -->4
	return 0;
}

效果图:

寒假作业:2024/2/6_第3张图片

你可能感兴趣的:(数据结构)