直接插入排序

    直接插入排序是一種比較簡單的排序方法,它的基本操作是:假設排序的記錄存儲在數組C[1..n]中,在排序過程的某個時刻,C被劃分爲兩個子區間,C[1..i-1]和C[i..n],其中前一個爲已排好的有序區,而後一個爲無序區,開始時有序區中只含有一個元素C[1],無序區中爲C[2..n]。排序過程中,只需要每次從無序區中取出第一個元素,把它插入到有序區的適當位置,使之成爲新的有序區,依次這樣經過n-1次插入後,無序區爲空,有序區包含了全部n個元素,至此排序完畢.用一個C示例說明如下

#include <stdio.h>
#include <stdlib.h>

/*直接插入排序練習*/

/*先定義一個無序數組*/

void InsertSort(int * c,int len);
void Show(int * c,int len);

int main(void){
	int zm[8]={2,5,30,6,11,13,16,15};
	int length=sizeof(zm)/sizeof(zm[0]);
//	printf("數組的長度是%d\n",length);
	InsertSort(zm,length);
	Show(zm,length);
	return 0;
}

void InsertSort(int * c,int len){   //插入排序
	int i,j,temp;
	for(i=1;i<len;i++){
		temp = c[i]; //當前記錄先保存下
		j=i-1;
		while(temp<c[j] && j>=0){  //找插入位置
			c[j+1]=c[j];   //記錄後移
			j--;
		}
		c[j+1]=temp;   //c[i]插入到正確位置

	}	
}

void Show(int * c,int len){
	int i;
	printf("新的數組是:\n");
	for(i=0;i<len;i++){
		printf("%d,",c[i]);
	}
}


程序執行結果如下:

wKiom1goZYPAHz1jAAArfaelpI4857.jpg-wh_50

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