标签:分享图片 ges 数组 bin png 两种 logs https ++
简单插入排序: 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
插入排序可以分成两种 :直接插入排序和二分查找插入排序
①:直接插入排序:
#include<stdio.h> void print(int * a){for(int i = 0 ;i<8;printf("%d ",a[i++]));printf("\n");} //打印函数 void insert_sort(int* a,int len) { int i,j,tmp; for (i = 1; i < len; i++) { tmp = a[i]; for(j = i -1;j>=0 && a[j]>tmp;j--) { a[j+1] =a[j]; } a[j+1] = tmp; printf("第%d趟:\n",i); print(a); } } void main() { int b[] = {3,534,23,2,1,5,87,4}; printf("原数组为:\n"); print(b); insert_sort(b,8); printf("排序结果为:\n"); print(b); }
运行结果为:
②:二分插入排序:
#include<stdio.h> void print(int * a){for(int i = 0 ;i<8;printf("%d ",a[i++]));printf("\n");} void InsertSortByBinarySearch(int* arr ,int len) { for (int i = 1; i < len; i++) { int temp = arr[i]; int low = 0, high = i - 1; int mid = -1; while (low <= high) { mid = low + (high - low) / 2; if (arr[mid] > temp) { high = mid - 1; } else { low = mid + 1; } } for(int j = i - 1; j >= low; j--) { arr[j + 1] = arr[j]; } arr[low] = temp; printf("第%d趟:\n",i); print(arr); } } void main() { int b[] = {3,534,23,2,1,5,87,4}; printf("原数组为:\n"); print(b); InsertSortByBinarySearch(b,8); printf("排序结果为:\n"); print(b); }
结果为:
标签:分享图片 ges 数组 bin png 两种 logs https ++
原文地址:http://www.cnblogs.com/LIUWEI123/p/7965743.html