●选择排序法
1.简要介绍
选择排序算法代码段:
for (int i = 0; i < len - 1; i++) { int temp; int k = i; for(int j=i+1;j<len;j++) { if (a[k] > a[j]) k = j; } if(k!=j) { temp = a[i]; a[i] = a[k]; a[k] = temp; } }
2.图形化演示
随机找五个数使用快速排序法进行从小到大排序,如下图所示。
在第一行中(k起始状态为0),①进行第一次将j(j=1)的值赋值给k(k=1),②进行第二次将j(j=2)的值赋给k(k=2),③进行第三次将j(j=4)的值赋值给k(k=4),最后进行两数的交换。
在第二行中(k起始状态为1),①进行第一次将j(j=2)的值赋值给k(k=2),比较判断后,无其它操作,最后进行两数的交换。
在第三行中(k起始状态为2),比较判断后,无其它操作。
在第四行中(k起始状态为3),①进行第一次将j(j=4)的值赋给k(k=4),最后进行两数的交换;在第五行中,完成了最终的从小到大的排序。
3.代码如下
#include<iostream> using namespace std; #define size 10 class selectsort { public: void selectsort_1(int a[],int len); void shownumber(); int arr[size]; }; void selectsort::selectsort_1(int a[], int len) { int temp; int i,j,k; for (i = 0; i < len - 1; i++) { k = i; for(j=i+1;j<len;j++) { if (a[k] > a[j]) k = j; } if(k!=j) { temp = a[i]; a[i] = a[k]; a[k] = temp; } //测试代码 cout << i + 1 << ":" << " "; for (int m = 0; m < len; m++) { cout << a[m] << " "; } cout << endl; } } void selectsort::shownumber() { for (int i = 0; i < size; i++) { cout << this->arr[i] << " "; } } void text() { selectsort ss; for (int i = 0; i < size; i++) { cin >> ss.arr[i]; } ss.selectsort_1(ss.arr, size); ss.shownumber(); } int main() { text(); }
4.结果如下