局部有序到整体有序思想
数值 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
下标 | 0 | 1 | 2 | 3 |
1.用数组来表示时当数值等于下标+1时可以判定有序
2.将4 3 2 1每次通过两两交换来更改序列 通过局部顺序的思想
循环判定只要前后两个值是逆序 可以通过交换改变
#include<stdio.h>
int Judge(int a[],int n)
{
int flag=1;
for(int i=0;i<n;i++)
{
if(a[i]!=i+1)
{
flag=0;
break;
}
}
return flag;
}
int main()
{
int n;
int sum=0;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
while(Judge(a,n)==0)
{
for(int i=0;i<n-1;i++)
{
if(a[i]>a[i+1])
{
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
sum++;
}
}
}
printf("%d",sum);
}