1、算法描述:将待排序表看做左、右两部分,左边为有序,右边为无序;将无序区的数据依次插入到有序区中 2、直接插入排序 /** * Function : 直接插入排序(ASC) * Param : (int array)整型数组 * Param : (int)数组长度 * Return : No */ void insertSort( int data[], int n ) { int temp; for (int i = 1; i < n; ++i) { temp = data[i]; for (int j = i - 1; j >= 0 && temp < data[j]; --j) { data[j + 1] = data[j]; } data[j + 1] = temp; } } 3、折半插入排序 /** * Function : 折半插入排序(ASC) * Param : (int array)整型数组 * Param : (int)数组长度 * Return : No */ void insertSort1( int data[], int n ) { int low; int high; int temp; for (int i = 1; i < n; ++i) { low = 0; high = i - 1; temp = data[i]; while (low <= high) { int mid = (low + high) / 2; if (temp < data[mid]) { high = mid - 1; } else { low = mid + 1; } } for (int j = i - 1; j >= low; --j) { data[j + 1] = data[j]; } data[low] = temp; } }