這就是選擇排序的問題
有N個瓶子,編號 1 ~ N,放在架子上。
比如有5個瓶子:
2 1 3 5 4
要求每次拿起2個瓶子,交換它們的位置。
經過若干次後,使得瓶子的序號為:
1 2 3 4 5
對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。
如果瓶子更多呢?你可以通過程式設計來解決。
輸入格式為兩行:
第一行: 一個正整數N(N<10000), 表示瓶子的數目
第二行:N個正整數,用空格分開,表示瓶子目前的排列情況。
輸出資料為一行一個正整數,表示至少交換多少次,才能完成排序。
例如,輸入:
5
3 1 2 5 4
程式應該輸出:
3
再例如,輸入:
5
5 4 3 2 1
程式應該輸出:
2
解題思路:選擇排序即可
#include<stdio.h>
int a[10010];
int main()
{
int n;
while(~scanf("%d",&n))
{
int i,j,minn,t,ans=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
minn=i;
for(j=i+1;j<n;j++)
{
if(a[minn]>a[j])
minn=j;
}
if(minn!=i)
{
ans++;
t=a[minn];
a[minn]=a[i];
a[i]=t;
}
}
printf("%d\n",ans);
}
return 0;
}
相關文章
- 簡單選擇排序就是簡單~~~排序
- 選擇排序就這麼簡單排序
- 選擇排序(java機試題)排序Java
- 選擇排序排序
- 排序之選擇排序排序
- 選擇排序中用異或實現swap()時出現的問題排序
- 選擇排序和快速排序排序
- js選擇排序JS排序
- Java 選擇排序Java排序
- [java]選擇排序Java排序
- 01選擇排序排序
- 選擇排序法排序
- 這就是為什麼企業會選擇自助分析工具的理由
- 排序演算法__選擇排序排序演算法
- 排序演算法:選擇排序排序演算法
- 選擇排序和氣泡排序排序
- 氣泡排序與選擇排序排序
- 氣泡排序和選擇排序排序
- 選擇排序和插入排序排序
- 前端面試題:演算法-選擇排序前端面試題演算法排序
- OJ刷題之《二元選擇排序》排序
- C# 選擇排序C#排序
- 陣列選擇排序陣列排序
- 簡單選擇排序排序
- 選擇排序的簡單理解排序
- 【爬坑日記】.class.class選擇器的選擇問題
- 選擇好的軟體,就是要選好的服務
- 經典排序之選擇排序(Java)排序Java
- 排序——選擇排序小練習(二)排序
- 排序——選擇排序小練習(一)排序
- 查詢與排序03,選擇排序排序
- (一)氣泡排序、選擇排序、插入排序排序
- 深入淺出的排序演算法-選擇排序排序演算法
- 排序(2)--選擇排序,歸併排序和基數排序排序
- 選擇問題——選取第K小元素
- 選擇排序java實現排序Java
- PHP 排序演算法之選擇排序PHP排序演算法
- 圖解選擇排序與插入排序圖解排序