排序演算法__直接插入排序

Enjoy_process發表於2019-03-06

                                              排序演算法__直接插入排序

 

 

一、介紹

直接插入排序是一種簡單的排序方法,它的基本操作是將一個記錄插入到已排序的有序表中,從而得到一個新的、記錄數增1的有序表。

 

二、C++實現

#include<iostream>

using namespace std;

void insertSort(int a[],int n)//直接插入排序,升序 
{
	for(int i=1;i<n;i++)//將元素a[i]插入到有序區間[0,i)中 
	{
		int t=a[i],j=i-1;//暫存a[i] ,尋找a[i]插入的位置
		//遍歷[0,i)內的元素,如果當前元素a[j]>a[i]就讓a[j]向後移動一個位置 
		while(j>=0&&a[j]>t) a[j+1]=a[j],j--; 
		a[j+1]=t;//元素插入的位置為j+1 
	}
}


int main()
{
	int a[10]={1,34,2,67,4,6,90,223,12,456};
	printf("排序前:"); 
	for(int i=0;i<10;i++)
	  printf("%d ",a[i]);
	insertSort(a,10);
	printf("\n排序後:");
	for(int i=0;i<10;i++)
	  printf("%d ",a[i]);
	return 0;
}

三、時間複雜度

O(n^{2})

相關文章