C++算法之冒泡排序、选择排序算法实例讲解
程序员文章站
2022-04-15 21:01:58
冒泡排序和选择排序都是低级排序,效率比较低。低级排序最简单的是冒泡排序。
从当前未排序的整数中找一个最小的整数,将它放在已排序的整数数列列表的最后。
要点:选择排序选最小的,往左边选。
冒泡排序是选...
冒泡排序和选择排序都是低级排序,效率比较低。低级排序最简单的是冒泡排序。
从当前未排序的整数中找一个最小的整数,将它放在已排序的整数数列列表的最后。
要点:选择排序选最小的,往左边选。
冒泡排序是选择最大的,而选择排序选择最小的,但是选择排序要相对冒泡排序要快,是因为冒泡排序中间有许多交换的操作,选择排序要找到最小然后进行交换。
#include<iostream> using namespace std; void selectsort(int *list,const int n); int main() { int x[] = {1,3,5,7,9,0,2,4,6,8}; selectsort(x,10); for(int k=0;k<10;k++) cout<<x[k]<<" "; cout<<endl; system("pause"); return 0; } void selectsort(int *list,const int n) { for(int i=0;i<n-1;i++) //最外边的循环是寻找最小的值的次数,可以是n次也可以是n-1次。 { int min = i; //min用来做记号,开始时第一个最小 for(int j= i+1;j<n;j++) { //每一遍扫描都是从i+1开始扫描,如果我们发现一个最小的,每次扫描的时候没有排序。 if(list[j]<list[min]) min = j; //冒泡排序一般发生在该位置。 } swap(list[i],list[min]);//把最小的放在最左边,0到i是已经排序的,i+1到n-1是未排序的,从未排序的里边找一个最小的放到左面 } }