| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
x286
10年前发布

选择排序C++实现

//选择排序  //对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,  //接着第二次比较,前面“后一个元素”现变成了“前一个元素”,  //继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),  //等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,  //就让第一个元素跟他交换一下值,这样就找到整个数组中最小的数了。然后找到数组中第二小的数,让他跟数组中第二个元素交换一下值,  //以此类推。  #include<iostream>  #include<array>  using namespace std;      template<class T>  void selection_sort(T&, int);      int main()  {  array<int, 10> arr = {3,2,1,5,4,7,6,9,8,0};  selection_sort(arr, arr.size());      for(int i = 0; i < 10; i++)  {  cout << arr[i] << endl;  }          cin.get();  return 0;  }      template<class T>  void selection_sort(T& arr, int count)  {  int index = 0;      auto min = arr[0];  for(int i = 0; i < count; i++)  {  min = arr[i];  index = i;  for(int j = i+1; j < count; j++)//寻找最小值  {  if(arr[j] < min)  {  min = arr[j];  index = j;  }  }  if(index != i)//判断当前最小值的下标是不是i,是的话不用交换,不是的话就和当前i位置的值交换          {              int temp = arr[i];              arr[i] = arr[index];              arr[index] = temp;          }  }  }