P1116 车厢重组
https://www.luogu.com.cn/problem/P1116
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, ans, a[10005]; 4 int main() 5 { 6 //冒泡排序 7 8 cin>>n; 9 for(int i=1; i<=n; i++) 10 cin>>a[i]; 11 12 for(int i=1; i<=n; i++){ 13 for(int j=1; j<n; j++){ //此处注意j取值范围为[1,n-1] 14 if(a[j]>a[j+1]){ 15 swap(a[j],a[j+1]); 16 ans++; 17 } 18 } 19 } 20 cout<<ans; 21 return 0; 22 }
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n, ans, a[10005]; 4 int main() 5 { 6 //冒泡排序 -- 优化 7 cin>>n; 8 for(int i=1; i<=n; i++) 9 cin>>a[i]; 10 11 for(int i=1; i<=n; i++){ 12 bool f=1; //设定交换标记 13 for(int j=1; j<n; j++){ //此处注意j取值范围为[1,n-1] 14 if(a[j]>a[j+1]){ 15 swap(a[j],a[j+1]); 16 ans++; 17 f=0; //说明有交换,仍然需要下一轮排序 18 } 19 } 20 if(f)break; //该轮没有交换则说明已排好序,直接退出 21 } 22 cout<<ans; 23 return 0; 24 }