1. 程式人生 > >小米oj——最少交換次數

小米oj——最少交換次數

描述
給出一個無序數列,每次只能交換相鄰兩個元素,求將原數列變成遞增數列的最少交換次數。 如:數列:2,3,1,交換3和1後變成:2,1,3;交換1和2之後變成:1,2,3。總共交換2次。

輸入
逗號隔開的正整數數列

輸出
正整數

輸入樣例
2,3,1
複製樣例
輸出樣例
2

本題可以簡化為求陣列中每一個元素的逆序數和
貼上程式碼

private static String solution(String line)
	{
		String a[] = line.split(",");
		int a1[] = new int[a.length];
		for(int i=0;i<a1.length;i++)
		{
			a1[i]=Integer.parseInt(a[i]);
		}
		int temp =0;
		for(int i = 0;i<a1.length;i++)
		{
			for(int j =0;j<i;j++)
			{
				if(a1[i]<a1[j])
					temp++;
			}
		}
		return String.valueOf(temp);
	}