插入排序和快速排序

插入排序是指,从前往后依次排好序,后面的元素插进来的时候,就找到比她小的,然后后面的往后移,插入进去。

i从1开始往后,j在它的前面,依次往前找大的往后移,然后把元素插入进去。

void insert( int number[], int count)
{
	int temp,j,m;
	for (int i = 1;i < count;i++)
	{
		temp = number[i];
		for ( j= i-1;number[j]>temp&&j >= 0;j--)
				number[j+1] = number[j];	
		number[j+1] = temp;
		for ( m=0;m< count;m++)
			printf("%d,",number[m]);  

		printf("\n");
	}
	printf("insert 排序后");
	printf("[");
	for (int i=0;i<count;i++)
	{
		printf("%d,",number[i]);
	}
	printf("]");

}


快速排序复杂,要用到递归的思想,思路混乱,找资料再写出来。

两个i,j,一个i++往后,一个j--往前,选择一个比较的对象,选第一个这里,然后交换。

 

void quick(int *number,int first,int last)
{
   printf("开始调用\n");
	int temp,j,m,i;
   if(first<last)
   {
	   i=first;
	   j=last-1;
	   temp=number[i];

       while(i<j)
	   {
		   while(i<j&&temp<number[j])
			   j--;
		   if (i<j)
		   {
			   number[i]=number[j];
			   number[j]=temp;
			   i++;
		   }
		   while(i<j&&temp>number[i])
			   i++;
		   if (i<j)
		   {
              number[j]=number[i];
			  number[i]=temp;
			  j--;
		   }
		   printf("[");
		   for (int i=0;i<last;i++)
		   {
			   printf("%d,",number[i]);
		   }
		   printf("]");
		   printf("\n");

	   }
	   number[i]=temp;
	   printf("调用左边的\n");
	   quick(number,first,i);
	   printf("调用右边的\n");
	   quick(number,i+1,last);
   }
 

}


要么是交换,要么是移动,记住的就是不能把值给冲掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值