zoukankan      html  css  js  c++  java
  • 数据结构和算法

    常用的排序 

    1、插入排序

        插入排序的基本思想是:每次将一个待排序的记录按其关键字大小插入前面已经排好序的子记录中的适当位置,直到全部记录插入完成为止。常用的插入排序有直接插入排序和希尔排序。

      2、归并排序

      归并排序(Merge Sort)是利用“归并”技术来进行排序。归并排序是将若干个已经排序的序列合并成一个有序的序列。

    3、冒泡排序

       数字之间的两两比较,并且根据结果进行位置调整.

       C++ Code:

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    void BubbleSort(int* pData, int count)
    {
    	int iTemp;
    	for (int i = 1; i < count; i++)
    	{
    		for (int j = count - 1; j  >= i; j --)
    		{
    			if (pData[j] < pData[j-1])
    			{
    				iTemp = pData[j-1];
    				pData[j-1] = pData[j];
    				pData[j] = iTemp;
    
    			}
    		}
    	}
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	printf("---冒泡排序---");
    	int data[] = {11, 41, 52,63, 23,45,32 };
    		BubbleSort(data,7);
    	for (int i = 0; i < 7; i++)
    	{
    		cout<< data[i] << " ";
    
    	}
    	return 0;
    }
    

    4、二分查找(Binary Search)

    前提条件:带查找的数字要有序,

    1,2,3,4,5,6,7,10,11,12,13,14,15,16,17

    先找出中间的数字,然后要找的数字和中间的数字进行比较。找的数字小于中间数字,在继续在中间数字的左边找; 反之在右边找。

    16

    public class ArraySearchTest {
    	
    	public static void main(String[] args) {
    		
    		int[] a = new int[]{1,2,3,4,5,6,7,8,9};
    		
    		int index = binarySearcy(a, 8);
    		
    		System.out.println(index);
    	}
    
    	public static int binarySearcy(int[] array, int value){
    		int low = 0; //第一个元素的下标
    		int height = array.length - 1; //最后一个元素的下标
    		
    		int middle ;
    		while (low <= height) {
    			middle = (low + height) / 2;
    			if(array[middle] == value){
    				return middle;
    			}
    			
    			if(value < array[middle] ){
    				height = middle -1;
    			}
    			
    			if(value > array[middle] ){
    				low = middle + 1;
    			}
    		}
    		
    		return -1;
    	}
    }
    

      

  • 相关阅读:
    浅谈Linux的内存管理机制
    [SCM]源码管理 perforce状态的检测
    轻松构建Mysql高可用集群系统
    [BuildRelease].NET代码静态检测FxCop
    Ant高级task
    Jenkins master在windows上安装
    Jenkins的Windows Slave的配置
    Jenkins的配置
    [BuildRelease]跨平台build脚本
    使用Synergy多台电脑共享键盘鼠标和剪贴板
  • 原文地址:https://www.cnblogs.com/linlf03/p/1997238.html
Copyright © 2011-2022 走看看