Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个数组,我只能交换第 i 个和第 i+1 个元素。如何使用最少数量的交换操作将此数组排序为循环数组?
例如我的数组是: -
3 5 4 2 1
然后交换第二和第三我得到
3 4 5 2 1
然后交换第四和第五我得到
3 4 5 1 2
这是 2 次交换中所需的有序循环数组。
另一个例子
4 3 5 1 2
这里只有一次交换第一和第二给我3 4 5 1 2
我应该使用什么算法来实现这一点?
您可以将 for 循环与临时变量一起使用,然后对其所有数组元素进行排序,但 for 循环应增加 2。
len=array[(array.length)]; for (i=1 ; i<len - 1 ; i=i+2 ){ temp=array[i]; array[i]=array[i+1]; array[i+1]=temp; } temp=array[0]; array[o]=array[len]; array[len]=temp;
这个简单的算法将在 java 中工作并根据您的需要完美地对数组进行排序。