数据结构七大算法

  • 1:冒泡排序

  单向冒泡排序
void BubbleSort(int a[], int length)//冒泡排序
{
	int i, j;
 
	for(i = 0; i < length-1; i++)///length-1个数需要进行比较
	{
		for(j = 0; j < length-1-i; j++)每循环一次可以找到最大的数放在最后一个位置、依次进行
		{
			if(a[j] > a[j+1])    //若前一个数大于后一个数,则交换位置
			{
				Swap(a[j], a[j+1]);
			}
		}
	}
}

  双向冒泡排序
void  DoubleBubbleSort(int a[],int length)
{
   int low=0,high=length-1,i,j;
  while(low<high){
  for(i=low;i<high;i++)//正向冒泡,从前往后找最大值
  {
    if(a[i]>a[i+1])
    {
      swap(a[i],a[i+1]);
     }
  }
   high--;
  for(j=high;j>low;j--)//反向冒泡,从后往前找最小值
  {
   if(a[j]<a[j-1])
    {
   swap(a[j],a[j-1])
    }
    }
    low++;
     }
    }
  • 2:快速排序

        

void QuickSort_1(int a[], int left, int right)
{
	int i=left,j=right,k=a[right];//选择最后一个元素为基准元素

	
	while(i < j)
	{
		while(i < j && arr[i] <= k)//正向遍历、找出大于基准元素的下标
		{
			i++;
		}
		arr[j] = arr[i];
 
		while(i <j && arr[j] >= k)反向遍历、找出小于基准元素的下标
		{
			j--;
		}
		arr[i] = arr[j];
	}
	arr[i] = k;
 
	QuickSort_1(arr, left, i-1);            //递归完成基准元素左边序列的排序
	QuickSort_1(arr, i+1, right);           //递归完成基准元素右边序列的排序
}
  • 3:简单选择排序

void  SelectSort(int a[],int length)
{
  int i=0,j=length-1,k;
  for(;i<length-1;i++)
 {
    k=i;
  for(j=i+1;j<length;j++)
     {
       if(a[k]>a[j])///记住最大值下标
          k=j;
     }
     if(k!=i)
      {
       swap(a[i],a[k]);//交换最大值下标
   }
        
  }
  }
  • 4:堆排序
  • 5:希尔排序
  • 6:归并排序
  • 7:直接插入排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值