fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. template<typename T>
  5. void selectionSort(std::vector<T>& array)
  6. {
  7. typedef typename std::vector<T>::iterator Itr;
  8. Itr itr_begin = array.begin();
  9. while(itr_begin != array.end())
  10. {
  11. Itr itr_min = itr_begin;
  12. for(Itr i = itr_begin + 1; i != array.end(); i++)
  13. {
  14. if(*i < *itr_min)
  15. {
  16. itr_min = i;
  17. }
  18. }
  19. std::iter_swap(itr_begin, itr_min);
  20. itr_begin++;
  21. }
  22. }
  23.  
  24. template<typename T>
  25. void print(const std::vector<T>& array)
  26. {
  27. for(auto itr = array.begin(); itr != array.end(); itr++)
  28. {
  29. std::cout << *itr << " ";
  30. }
  31. std::cout << '\n';
  32. }
  33.  
  34. int main()
  35. {
  36. std::vector<int> v({5, 3, 12, 2, 8});
  37. std::cout << "Original Array :";
  38. print(v);
  39. selectionSort(v);
  40. std::cout <<"Sorted Array :";
  41. print(v);
  42. std::cout << '\n';
  43.  
  44. std::vector<char> c({'t', 'q', 'a', 'r', 'p'});
  45. std::cout << "Original Array :";
  46. print(c);
  47. selectionSort(c);
  48. std::cout <<"Sorted Array :";
  49. print(c);
  50. std::cout << '\n';
  51.  
  52. std::vector<std::string> str({"code", "live", "love", "sing", "create"});
  53. std::cout << "Original Array :";
  54. print(str);
  55. selectionSort(str);
  56. std::cout <<"Sorted Array :";
  57. print(str);
  58. std::cout << '\n';
  59.  
  60. }
  61.  
  62.  
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
Original Array :5 3 12 2 8 
Sorted Array :2 3 5 8 12 

Original Array :t q a r p 
Sorted Array :a p q r t 

Original Array :code live love sing create 
Sorted Array :code create live love sing