●插入排序法
1.简要介绍
插入排序算法代码段:
for (int i = 1; i < len; i++) { int t = a[i]; int j = i - 1; while (j >= 0 && t < a[j]) { a[j+1] = a[j]; j--; } a[j + 1] = t; }
2.图形化演示
随机找5个数用插入排序法进行从小到大排序,如下图所示(每一个红框为一次进行)。
第一次进行,i=1(标红字体为t=arr[1])、j=0,①while操作不进行,t插入到arr[1]数组位;
第二次进行,i=2(标红字体为t=arr[2])、j=1,①while操作进行,将arr[1]插入到arr[2]数组位,i=2,j=0,②while操作不进行,t插入到arr[1]数组位;
第三次进行,i=3(标红字体为t=arr[3])、j=2,①while操作进行,将arr[2]插入到arr[3]数组位,i=3,j=1,②while操作不进行,t插入到arr[2]数组位;
第四次进行,i=4(标红字体为t=arr[4])、j=3,①while操作进行,将arr[3]插入到arr[4]数组位,
i=4,j=2,②while操作不进行,t插入到arr[3]数组位;
第五次进行,完成排序;
3.代码如下
#include<iostream> using namespace std; #define size 10 class insertionsort { public: void insertionsort_1(int a[],int len); void shownumber(); int arr[size]; }; void insertionsort::insertionsort_1(int a[], int len) { for (int i = 1; i < len; i++) { int t = a[i]; int j = i - 1; while (j >= 0 && t < a[j]) { a[j+1] = a[j]; j--; } a[j + 1] = t; //测试代码 cout << i + 1 << ":" << " "; for (int m = 0; m < len; m++) { cout << a[m] << " "; } cout << endl; } } void insertionsort::shownumber() { for (int i = 0; i < size; i++) { cout << this->arr[i] << " "; } } void text() { insertionsort is; for(int i=0;i<size;i++) { cin >> is.arr[i]; } is.insertionsort_1(is.arr, size); is.shownumber(); } int main() { text(); }
4.结果如下