选择排序的实现以及性能测试

用C++语言实现
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
首先我们写一个用来测试的代码:

 1 #ifndef INC_03_SELECTION_SORT_DETECT_PERFORMANCE_SORTTESTHELPER_H
 2 #define INC_03_SELECTION_SORT_DETECT_PERFORMANCE_SORTTESTHELPER_H
 3 #include <iostream>
 4 #include <ctime>
 5 #include <cassert>
 6 #include <string>
 7 using namespace std;
 8  SortTestHelper {
 9     // 生成有n个元素的随机数组,每个元素的随机范围为[rangeL,rangeR]
10         int *generateRandomArray(int n,int rangeL,1)">int rangeR) {
11         assert(rangeL <= rangeR);
12         int *arr = new [n];
13         srand(time(NULL));
14         for (int i = 0; i < n; i++)
15             arr[i] = rand() % (rangeR - rangeL + 1) + rangeL;
16         return arr;
17     }
18      打印arr数组的所有内容
19     template<typename T>
20     void printArray(T arr[],1)"> n) {
21 
22         23             cout << arr[i] << " ";
24         cout << endl;
25 
26         27 28      判断arr数组是否有序
29     template<typename T>
30     bool isSorted(T arr[],1)">31 
32         0; i < n - 1; i++33             if (arr[i] > arr[i + 1])
34                 return false35 
36         true37 38     template<typename T>
39     void testSort(const string &sortName,1)">void (*sort)(T[],1)">int),T arr[],1)">40 
41         clock_t startTime = clock();
42         sort(arr,n);
43         clock_t endTime =44 
45         assert(isSorted(arr,n));
46         cout << sortName << " : " << double(endTime - startTime) / CLOCKS_PER_SEC <<  s" <<47 
48         49 50 };
51 #endif

然后在主函数中实现选择排序并进行测试:

 1 #include <iostream>
 2 #include SortTestHelper.h"
 3  4 template<typename T>
 5 void selectionSort(T arr[],1)"> n){
 6     for(0 ; i < n ; i ++){
 7         int minIndex = i;
 8         for( int j = i + 1 ; j < n ; j ++ )
 9             if( arr[j] < arr[minIndex] )
10                 minIndex = j;
11         swap( arr[i],arr[minIndex] );
12 }
14  main() {
15     int n = 2000016     int *arr = SortTestHelper::generateRandomArray(n,0,1)">17     SortTestHelper::testSort(Selection Sortdelete[] arr;
19     return 20 21     

结果分析:

可见我们对20000个从1-----20000的随机元素进行选择排序最终用时0.667秒

相关文章

背景:计算机内部用补码表示二进制数。符号位1表示负数,0表...
大家好,我们现在来讲解关于加密方面的知识,说到加密我认为不...
相信大家在大学的《算法与数据结构》里面都学过快速排序(Qui...
加密在编程中的应用的是非常广泛的,尤其是在各种网络协议之...
前言我的目标是写一个非常详细的关于diff的干货,所以本文有...
对称加密算法 所有的对称加密都有一个共同的特点:加密和...