数据结构和算法

常用的排序 

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;
	}
}

  

原文地址:https://www.cnblogs.com/linlf03/p/1997238.html