11月21号课堂笔记

发布时间 2023-12-23 19:39:07作者: lulixiu

1.插入排序

#include"stdio.h"
#define N 5
int main()
{
	//1 2 3 4 5
	//2 1 3 4 5
	int a[N]={1,2,3,4,5},i,j,tmp;
	for(i=1;i<N;i++)
	{
		j=i-1;
		tmp=a[i];
		while(a[j]<tmp&&j>=0){
			a[j+1]=a[j];
			j--;
		}
		a[j+1]=tmp;
	}
	for(i=0;i<N;i++)
		printf("%d ",a[i]);
	return 0;
}

2.希尔排序

#include"stdio.h"
#define N 5
int main()
{
	
	int a[N]={1,2,3,4,5,6,7,8,9,10},gap,i,j,tmp,k;
	//1 2 3 4 5 6
	//1和4组队,2和5组队,3和6组队,组间比较,1组先比 
	// 组内比较,4和1交换。。。。。。。
	 
	for(gap=N/2;gap>=1;gap/=2)//控制分组 
	{
		for(i=0;i<gap;i++)//组间比较
		{
			for(j=i+gap加了组长;j<N;j+=gap)//组内比较 
			{
				k=j-gap;
				tmp=a[j];
				while(k>=0&&a[k]<tmp)
				{
					a[k+gap]=a[k];
					k-=gap;
				}
				a[k+gap]=tmp;
			}
		 } 
	}
	for(i=0;i<N;i++)
		printf("%d ",a[i]);
	return 0;
}

3.指针

#include<stdio.h>
#include"stdlib.h"
int main(){
	int **p,n=10,m=10,i,j;
	p=(int**)malloc(m*sizeof(int*));//申请指针的指针的动态内存 
	for(i=0;i<m;i++)
	{
		p[i]=(int*)malloc(n*sizeof(int));//在第二维的数组里申请内存 
	}
	for(i=0;i<m;i++)//赋值 
		for(j=0;j<n;j++)
			p[i][j]=i*j;
	for(i=0;i<m;i++)//输出 
		for(j=0;j<n;j++)
			printf("%d ",p[i][j]);  
	return 0;
}