2.6作业

2.6作业_第1张图片2.6作业_第2张图片

#include
#include
#include
//冒泡排序
void maopao(int *p,int len)
{
	for(int i=1;i*(p+j+1))
			{
				int t=*(p+j);
				*(p+j)=*(p+j+1);
				*(p+j+1)=t;
			}
		}
	}

}
//输出函数
void output(int *p,int len)
{
	for(int i=0;i*(p+j))
			{
				min=j;
			}
		}
		if(min!=i)
		{
			int t=*(p+min);
			*(p+min)=*(p+i);
			*(p+i)=t;
		}
	}
}
//直接插入排序
void insert_sort(int *p,int len)
{
	int j;
	for(int i=1;i=0;j--)
		{
			if(*(p+j)>t)
			*(p+j+1)=*(p+j);
			else
				break;
		}
		*(p+j+1)=t;
	}
}
//快速排序
//确定基准值,返回其下标
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);
}
int main(int argc, const char *argv[])
{
	
	int arr[]={23,24,12,5,33,5,34,7};
	int len=sizeof(arr)/sizeof(arr[0]);
	maopao(arr,len);
	output(arr,len);
	simple_sort(arr,len);
	output(arr,len);
	insert_sort(arr,len);
	output(arr,len);
	quick_sort(arr,0,len-1);
	output(arr,len);

	return 0;
}

 2.6作业_第3张图片

 2.6作业_第4张图片

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;
}

 2.6作业_第5张图片

#include
#define swap(n) n=(((n) &0xAAAAAAAA) >> 1) +  (((n &0x55555555)<<1))
int main(int argc, const char *argv[])
{
	int num;
	printf("please enter num:");
	scanf("%d",&num);
	int p=swap(num);
	printf("交奇偶位后为:%d\n",p);
	
	return 0;
}

你可能感兴趣的:(排序算法,算法,数据结构)