C++ 内部排序(一)

来源:互联网 发布:zs什么意思网络用语 编辑:程序博客网 时间:2024/06/07 07:14

先讲两个概念,所谓内部排序,指待排序的节点均存储在内存中。所谓排序的稳定性,指排序后,值相等的两个元素原来相对的位置是否发生变化了.举个例子。

待排序列:3(1),1,5,3(2)  稳定排序:1,3(1),3(2),5  不稳定排序:1,3(2),3(1),5

下面写了插入排序,冒泡排序和选择排序.

/*sorting functions*/#include <iostream>#define MAXN 7using namespace std;void insert_sort(int *a, int length);void buble_sort(int *a, int length);void select_sort(int *a, int length);int main(){int a[MAXN] = {34, 12, 67, 33, 23, 56, 78};int length = MAXN;//insert_sort(a, length);//buble_sort(a, length);select_sort(a, length);return 0;}/*稳定排序*/void insert_sort(int *a, int length){int temp;int i,j;for(i=1; i<length; i++){temp = a[i];for(j=i-1; j>=0 && temp<a[j]; j--){a[j+1] = a[j];}a[j+1] = temp;}for(i=0; i<length; i++){cout<<a[i]<<" ";}cout<<endl;}/*稳定排序*/void buble_sort(int *a, int length){int i,j,temp;for(i=0; i<length; i++){for(j=0; j<length-1; j++){if(a[j]>a[j+1]){temp = a[j+1];a[j+1] = a[j];a[j] = temp;}}}for(i=0; i<length; i++){cout<<a[i]<<" ";}cout<<endl;}/*不稳定排序*/void select_sort(int *a, int length){int i,j,k,temp;for(i=0; i<length-1; i++){k = i;for(j=i+1; j<length; j++){if(a[j]<a[k]){k=j;}}temp = a[i];a[i] = a[k];a[k] = temp;}for(i=0; i<length; i++){cout<<a[i]<<" ";}cout<<endl;}



原创粉丝点击