An array of length n contains numbers 0 to n-1 in random order. Now you can only perform swaps between 0 and other numbers. Please sort this array.
packagemainimport"fmt"funcmain(){s:=[]int{3,5,4,0,1,2,6}for_,v:=ranges{fmt.Printf("%d ",v)}fmt.Printf("\nafter:\n")variint// First find 0 and put it at the first positionfors[i]!=0{i++}s[0],s[i]=s[i],s[0]i=1for{// Starting from index 1, swap s[i] with 0 to move number x to position s[x]fors[i]!=i{s[s[i]],s[0]=s[0],s[s[i]]s[i],s[s[i]]=s[s[i]],s[i]// Remember to swap 0 back to its original position each times[i],s[0]=s[0],s[i]}ifi==len(s)-1{break}// After sorting s[i], proceed to sort s[i+1]i++}for_,v:=ranges{fmt.Printf("%d ",v)}}