《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_C Stable Sort
2017-06-01 22:16
519 查看
《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_C Stable Sort
第三章 Sort I
ALDS1_2_C Stable Sort
这道题目,就是为了说明 冒泡排序是稳定排序的,而选择排序则不是,没有什么新东西。#include <iostream> using namespace std; struct data{ char a; char b; }; int BubbleSort(struct data *a,int n){ int count=0; int flag=1; while(flag){ flag=0; for(int i=n-1;i>0;i--){ if(a[i].b<a[i-1].b){ struct data temp=a[i]; a[i]=a[i-1]; a[i-1]=temp; flag=1; count++; } } } } int SelectionSort(struct data *a,int n){ int count=0; for(int i=0;i<n-1;i++){ int minj=i; for(int j=i+1;j<n;j++){ if(a[minj].b>a[j].b){ minj=j; } } if(minj!=i){ struct data temp = a[minj]; a[minj]=a[i]; a[i]=temp; count++; } } } int main() { struct data d1[40]; struct data d2[40]; int n; cin>>n; for(int i=0;i<n;i++){ cin>>d1[i].a>>d1[i].b; d2[i]=d1[i]; } BubbleSort(d1,n); SelectionSort(d2,n); int flag=1; for(int i=0;i<n;i++){ if(d1[i].a!=d2[i].a){ flag=0; break; } } for(int i=0;i<n;i++){ if(i>0) cout<<" "; cout<<d1[i].a<<d1[i].b; } cout<<endl; cout<<"Stable"<<endl; for(int i=0;i<n;i++){ if(i>0) cout<<" "; cout<<d2[i].a<<d2[i].b; } cout<<endl; if(!flag){ cout<<"Not stable"<<endl; } else{ cout<<"Stable"<<endl; } return 0; }
相关文章推荐
- 《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_A Bubble Sort
- 《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_B Selection Sort
- 《挑战程序设计竞赛》阅读笔记一 之 ALDS1_1_A Insertion Sort
- 《挑战程序设计竞赛》阅读笔记一 之 ALDS1_1_D Maximum Profit
- 《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_D Shell Sort
- 第三章 ALDS1_2_C:Stable Sort 稳定排序
- 《挑战程序设计竞赛》阅读笔记一 之 ALDS1_1_B Greatest Common Divisor
- 4000 《挑战程序设计竞赛》阅读笔记一 之 ALDS1_1_C Prime Numbers
- stable_sort()与sort()的用法区别
- algorithm库介绍之---- stable_sort()方法 与 sort()方法 .
- STL_算法_对全部元素排序(sort、stable_sort)
- stl-stable_sort源码学习笔记
- HDU1031 Design T-Shirt 【stable_sort】
- stable_sort
- 泛型算法之sort,unique,stable_sort
- 第七章 ALDS1_6_A:Counting Sort 计数排序
- STL algorithm算法sort,stable_sort(55)
- AOJ-ALDS1_1_A Insertion Sort【插入排序】
- stable_sort
- stl-stable_sort源码学习笔记