插入法排序

一、學習要點:
1.直接插入的核心思想:將給定數組看成是有序表和無序表組成;開始時有序表只有1個元素,無序表包含n-1個元素,排序過程是每次從無序數組中抽取一個元素,把它插到有序數組中的適當位置,最後形成新的有序表;
2.首先找到應該插入的位置,插入位置之後的所有元素向後移位,移位之前要插入數據及時保存;
3.爲防止移位後的數據覆蓋問題,要移位的所有元素從最後移位開始;
二、代碼:

#include<stdlib.h>
#include<iostream>
using namespace std;
	void insert_sort(int *arr,int n){
		int i,j,k;
		for(i=1;i<n;i++)
		{
			for(j=i-1;j>=0;j--)
			{
				if(arr[i]>arr[j])
				{
					break;
				}
			}
			int temp=arr[i];
			for(k=i-1;k>j;k--)
			{
				arr[k+1]=arr[k];
			}
			arr[j+1]=temp;
		}
		}
int main()
{
	int a[10]={9,8,7,6,5,4,2,3,1,0};
	insert_sort(a, 10);
	for (int i = 0; i < 10; i++)
	 {
	  cout << a[i] << endl;
	 }
	 system("pause");
	 return 0;
	}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章