zoukankan      html  css  js  c++  java
  • 经典排序算法

    下面的几种排序算法都是非常经典的排序算法。

    1) 冒泡排序(Bubble Sort)

    2) 选择排序(Select Sort)

    3) 插入排序(Insert Sort)

    void Bubble_Sort(int Arr[], int nLen)
    {
    	int i = 0;
    	int j = 0;
    	if (NULL == Arr || nLen <= 0)
    	{
    		return;
    	}
    	for (i = 0; i < nLen-1; i++)
    	{
    		for (j = i+1; j < nLen-i; ++j)
    		{
    			if (Arr[i] > Arr[j])
    			{
    				Swap(Arr[i], Arr[j]);
    			}
    		}
    	}
    }
    

      

    void Select_Sort(int Arr[], int nLen)
    {
    	if (NULL == Arr || nLen <= 0)
    	{
    		return;
    	}
    	int i = 0;
    	int j = 0;
    	int nMin;
    	for (; i < nLen-1; i++)
    	{
    		int nMin = i;
    		// 这一趟循环里选出最值
    		for (j = i+1; j < nLen; j++)
    		{
    			if (Arr[nMin] > Arr[j])
    			{
    				nMin = j;
    			}
    		}
    		// 将选出的最值进行交换
    		if (nMin != i)
    		{
    			Swap(Arr[i], Arr[j]);
    		}
    	}
    }
    

      

    void Insert_Sort(int Arr[], int nLen)
    {
    	if (NULL == Arr || nLen <= 0)
    	{
    		return;
    	}
    	// 循环从第二个数组元素开始
    	for (int i = 1; i < nLen; i++)
    	{
    		int nTmp = Arr[i];
    		// 从最邻近的一个一直往前查找
    		int index = i-1;
    		while ((Arr[index] > nTmp)&&(index >= 0))
    		{
    			// 数据往后迁移
    			Arr[index+1] = Arr[index];
    			index--;
    		}
    		Arr[index+1] = nTmp;
    	}
    
    }
    

      

  • 相关阅读:
    之前的博客
    用struts2 s2-045漏洞拿站记录
    修改BlackLowKey皮肤样式,增加占屏比
    SpringBoot自动配置原理
    CAS无锁技术
    CAS单点登录原理解析
    死锁与活锁的区别,死锁与饥饿的区别
    jvm问题
    jdk动态代理的实现原理
    抽象工厂
  • 原文地址:https://www.cnblogs.com/Jasonscor/p/3504329.html
Copyright © 2011-2022 走看看