插入排序学习

插入排序:简单来说,对一个序列,无序的元素一个个地插入已排序的部分。

C++实现:

#include<iostream>
//交换数据
inline void my_swap(int &a, int &b)
{
	int temp = a;
	a = b;
	b =temp;
}
//插入排序
void insert_sort(int *arr,int n)
{
	//priot为了保存哨兵元素
	int pviot = 0, j = 0;
	//第一个元素有序,因此从i=1开始
	for (int i = 1; i < n; ++i)
	{
		pviot = arr[i];
		j = i-1;
		//如果哨兵元素之前的元素比自己大,则不断移位
        while(j >= 0 && arr[j] >= pviot)
		{
			my_swap(arr[j],arr[j+1]);
			--j;
		}
		//放置哨兵元素到适当位置
        arr[j+1] = pviot;
	}
}
//打印数组
void dis_arr(int *a, int n)
{
	std::cout << "The array is: ";
	for (int i = 0; i< n;++i)
	{
		std::cout << a[i] << " ";
	}
	std::cout << std::endl;
}


int main()
{ 
	int arr[] = {1,-1,90,20,8,-80};
	int n = sizeof(arr)/sizeof(*arr);
	dis_arr(arr,n);
	insert_sort(arr,n);
	dis_arr(arr,n);
   
}

  

posted @ 2011-08-15 21:35  hailong  阅读(328)  评论(0编辑  收藏  举报