(2)选择排序: 基本思想:从数组的未排序区域选出一个最小的元素,把它与数组中的第一个元素交换位置;然后再从剩下的未排序区域中选出一个最小的元素,把它与数组中的第二个元素交换位置。重复上述过程,直到数组中的所有元素按升序排列完成。 【案例】 对一维数组中的十个数据进行从小到大排序: #include<iostream> using namespace std; int main(){ int a[]={1,3,5,8,9,10,7,34,89,46}; int m=0; for(int i=0;i<10;i++){ int wz=i; for(int j=i+1;j<10;j++){ if(a[j]<a[wz]){ wz=j; } } m=a[i]; a[i]=a[wz]; a[wz]=m; } for(int i=0;i<10;i++){ cout<<a[i]<<" "; } return 0; } (3)插入排序: 基本思想:把一个要排序的数组划分为已排序和未排序的两部分,再从未排序部分逐个去除元素,把它和已排序元素进行比较,从右到左比较相邻的两个元素,如果右边的元素比左边的元素小,则交换两个元素,并向左继续比较和交换,否则就停止比较。按此处理未排序部分的所有元素,最终得到一个按升序排列的有序数组。这种算法也叫直接插入排序。 【案例】 对一维数组中的十个数据进行从小到大排序: #include<iostream> using namespace std; int main(){ int a[]={1,3,5,8,9,10,7,34,89,46}; int m=0; for(int i=1;i<10;i++){ for(int j=i;j>0;j--){ if(a[j]<a[j-1]){ m=a[j]; a[j]=a[j-1]; a[j-1]=m; }else{ j=0; } } } for(int i=0;i<10;i++){ cout<<a[i]<<" "; } return 0; } 桶排序思想: 把每个数组开辟的空间看作一个桶, 将与桶编号相同的数据存入桶中 1 3 5 7 9 8 6 4 2 10 数据b[] 开辟桶的个数大于数据最大值 第一步:桶内初始化为0 第二步:判断数据存入桶中 a[11] a[0]...a[10] if(i==b[j]) a[i]++; 第三步输出: if(a[i]!=0){ i a[i]--; } #include<iostream> #include<bits/stdc++.h> using namespace std; int main(){ int a[10]={1,3,9,9,9,10,2,4,6,8}; int b[1000]; memset(b,0,sizeof(b));//数组全部初始化为0 // for(int i=0;i<1000;i++){ // b[i]=0; // } for(int i=0;i<10;i++){ b[a[i]]++; } for(int i=0;i<1000;i++){ while(b[i]!=0){ cout<<i<<" "; b[i]--; } } return 0; }