插入排序【c语言】

#include <stdio.h>

void insertSort( int arr[] , int size ) {
	int i , j , k , f /*First element*/;
	// 0 1 2 3 4 
	// 4			3,2,1
	// 3 4			2,1
	// 2 3 4		1

	// 1. 遍历无序区域
	for ( i = 1; i < size; i++ ) {
		f = arr[i] ; // 无序区的第一个元素,与有序区比较
		// 2. 遍历有序区域, 找到第一个比无序区大的元素
		for ( j = 0; j < i; j++ ) {
			if ( f < arr[j] ) {
				// 3. 后移,j 以及之后的元素
				for ( k = ( i - 1 ); k > j ; k-- ) {
					arr[ k + 1 ] = arr[ k ];
				}

				arr[ j ]  = f;
			}
		}
	}
}

void printAll( int arr[], int size ) {
	int i =0;

	for ( i = 0; i < size; i++ ) {

		printf( "%d ", arr[i]  );
	}

	printf( "\n" );
}

void main() {
	int arr[] = {3,2,1,2,3, 7,8,9,10 };
	int size = sizeof( arr )  / sizeof( int );
	
	printAll( arr, size );
	insertSort( arr, size );
	printAll( arr, size );
}


已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



原文地址:https://www.cnblogs.com/qwop/p/3438442.html