长度为n的数组乱序存放着0到n-1,只能0与其他数进行交换,实现排序

我的思路:

只用一个for循环从数组第一个开始遍历下去,

1)如果第 i 个位置与下标为 i 的数组的值不相等,

2)再判断数组第一个元素是否为0,

3)为0则将0与数组下标为 i 的数进行交换

4)将0与数组第一个元素的值作为下标对应的数进行交换

5)将0与数组第一个元素进行交换

如:array = 301254

第0个位置对应的是3不等于0,则将0与array[3]进行交换得到321054

再将0与数组第一个元素进行交换即与3进行交换得到 021354,第一次循环完成

然后接下来是第二次循环:

第1个位置对应的是0等于0,则将0与array[1]进行交换得到201354

再将0与数组第一个元素的值作为下标对应的数进行交换即与array[2]交换得到210354

再将0与数组第一个元素进行交换即与2进行交换得到012354

。。。

最后得到012345

---------------------------以下为在Android Studio 上的kotlin代码 -------------------------

package com.hh.joehu.swapwithzero

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Log

class MainActivity : AppCompatActivity() {

    companion object {
        var array:IntArray = intArrayOf(9,0,1,2,5,4,8,7,6,3,10,15,12,14,13,11)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        sort(array)

    }


    private fun swapWithZero(array:IntArray, number : Int){
        var zIndex:Int = -1
        var nIndex:Int = -1
        for(i in 0..(array.size-1)){
            if(array[i] == 0){
                zIndex = i
            }
            if(array[i] == number){
                nIndex = i
            }
        }
        val temp:Int = array[zIndex]
        array[zIndex] = array[nIndex]
        array[nIndex] = temp

    }

    private fun sort(array:IntArray) {
        val len :Int = array.size
        if(len <= 1){
            return
        }
        for(i in 0..(len-1)){
            if(i != array[i]){
                if(array[0] == 0){
                    swapWithZero(array,array[i])
                    print(array)
                }
                swapWithZero(array,array[array[0]])
                swapWithZero(array,array[0])
                print(array)
            }
        }
    }

   private fun print(arr:IntArray){
        for(i in 0..(arr.size-1)){
           Log.e("abc","aaa " + arr[i] + " ")
        }
       Log.e("abc","----------------------")
    }

}

结果:

02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
02-27 19:42:42.079 1270-1270/? E/abc: aaa 0    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 1    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 2    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 3    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 4    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 5    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 6    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 7    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 8    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 9    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 10    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 11    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 12    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 13    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 14    
02-27 19:42:42.079 1270-1270/? E/abc: aaa 15    
02-27 19:42:42.079 1270-1270/? E/abc: ----------------------
 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值