数据结构与算法之选择排序(C++)
前面我们讲了一下冒泡排序,原理比较简单,但是我们发现他的排序比较慢,需要不断的进行数据的交换。然后我们来讲一讲选择排序,他不用一直进行数据的交换,他会找到最小的那个数,放在最左边,跟冒泡排序的不同之处,冒泡是两个数之间的比较,大的那个数放到右边。
选择排序
选择排序的原理也比较好理解,比如我们有n个数,我们要对这n个数进行排序,那么一样我们需要进行数据的扫描,寻找最小的那个数,放在最左边,有一点我们是需要注意的是冒泡排序每次都是从第一个数开始扫描的,而选择排序的话是第一次是从第二开始扫描,而第二次则是从第三始扫描的,因为第一个数已经是最小的了,就不在需要进行扫描比较了。
话不多说,用程序理解一下
1 #include<iostream> 2 3 using namespace std; 4 5 void SelectSort(int *list , int n); 6 7 int main() 8 { 9 int a[] = {2,4,6,8,0,1,3,5,7,9}; 10 SelectSort(a,10); 11 for(int k=0; k<10; k++) 12 cout << a[k] <<endl; 13 14 return 0; 15 } 16 17 void SelectSort(int *list, int n) 18 { 19 for(int i=0; i<n-1; i++) 20 { 21 int min = i; 22 for(int j=i+1; j<n; j++) 23 { 24 if(list[j]<list[min]) 25 min = j; 26 } 27 swap(list[i],list[min]); 28 } 29 30 }