무작위 정렬 집합의 사고

3097 단어 정렬
나는 이미 알고 있는 그룹의 요소를 무작위로 배열하여 인터넷에 검색하기 시작했다. 코드는 다음과 같다.
        private static List<string>  RaD(List<string> strTemp)

        {

            List<string> newList = new List<string>();

            Random r = new Random();

            while (true)

            {

                int i = r.Next(0, strTemp.Count);

                if (!newList.Contains(strTemp[i]))

                    newList.Add(strTemp[i]);

                if (newList.Count == strTemp.Count)

                    break;

            }

            return newList;

        }

대부분은 Contains를 사용하여 포함 여부를 보고 새로운 집합에 포함되지 않아서 추가한다. 그러나 개인적으로는 매번 새로운 그룹에 삽입된 요소가 있는지 검색해 본다. 이렇게 새로운 그룹을 여러 번 훑어보는 것이 아니라고 생각한다. 그래서 내가 수정했다. 나의 생각은 무작위로 하나의 수를 만들고 이를 새로운 그룹에 추가한 다음에 이 수를 삭제하는 것이다. 추가는 코드는 다음과 같다.
    private static List<string> RaD2(List<string> strTemp)

        {

            List<string> newList = new List<string>();

            Random random = new Random();



            for (int i = 0; i < strTemp.Count;)

            {

                int r = random.Next(0, strTemp.Count);

                newList.Add(strTemp[r]);

                strTemp.RemoveAt(r);

            }

            return newList;

        }

개인적으로는 이런 효율이 더 좋고 반복 횟수를 줄였으며 매번 요소를 삭제하는 조작이 증가했다.이상은 개인적인 이해입니다. 어떤 더 빠르고 효율적이고 좋은 방법이 있는지 모르겠습니다. 무작위 정렬 집합??벽돌 찍는 걸 환영합니다!!

좋은 웹페이지 즐겨찾기