排序算法之三选择排序

来源:互联网 发布:大圣美人进阶数据 编辑:程序博客网 时间:2024/05/29 02:35

1:简单选择排序

#include <iostream>using namespace std;//简单选择排序算法void SelectSort(int r[],int n){int i,j,temp;for (i=0;i<n;i++){int index=i;for (j=i+1;j<n;j++){if (r[j]<r[index])index=j;}if(index!=i){temp=r[i];r[i]=r[index];r[index]=temp;}}}int main (){int r[]={9,8,7,6,4,5,3,1,2,0};SelectSort(r,10);for (int i=0;i<10;i++)cout<<r[i]<<" ";cout<<endl;return 0;}

这是一种不稳定算法。


2:堆排序

#include <iostream>using namespace std;//堆排序算法//1 筛选法调整堆的算法void Sift(int r[],int k ,int m){int i=k,j=2*i+1;int temp;while (j<=m){if(j<m&&r[j]<r[j+1]) j++;if (r[i]>r[j]) break;else{temp=r[i];r[i]=r[j];r[j]=temp;i=j;j=2*i+1;}}}//2 堆排序算法void HeapSort(int r[],int n){int i,temp;for (i=n/2-1;i>=0;i--)Sift(r,i,n-1);for (i=n-1;i>0;i--){temp=r[i];r[i]=r[0];r[0]=temp;Sift(r,0,i-1);}}int main (){int r[]={9,8,7,6,4,5,3,1,2,0};HeapSort(r,10);for (int i=0;i<10;i++)cout<<r[i]<<" ";cout<<endl;return 0;}
这是一种不稳定算法。

原创粉丝点击