>

정렬해야 할 많은 수의 결합 된 숫자가있는 파일이 있습니다. Excel을 사용해 보았지만 일부 값을 정렬하지 않기 때문에 제대로 작동하지 않습니다 (매우 이상합니다). 그래서 C #을 사용 하여이 작업을 수행하고 싶습니다. 다른 사이트에서 아래 코드를 발견하고 한 번에 한 줄씩 (여러 줄 텍스트 상자가 아닌) 작동합니다. 뒤에 오는 것과 같이 여러 줄의 숫자에 사용되도록 수정하고 왼쪽에서 오른쪽으로 (가장 작은 것에서 가장 큰 것) 또는 오른쪽에서 왼쪽으로 정렬하는 방법은 무엇입니까? 또는 다른 더 나은 솔루션이나 옵션이있는 경우. 텍스트 파일이나 텍스트 상자에서 직접 읽은 다음 다른 텍스트 상자에 결과를 표시하거나 새 파일에 저장할 수 있습니다.

숫자 * 목록 샘플 :

(1) 19 11 7 12 18   
(2) 25 18 15 10 16  
(3) 12 23 1 18 11   
(4) 4 15 2 3 26 
(5) 14 3 10 8 17    
(6) 8 1 26 14 11    
(7) 16 24 4 6 26    
(8) 14 23 13 21 15  
(9) 21 14 12 19 22  
(10) 1 23 12 6 19   
(11) 11 14 1 25 3

* 괄호 안의 숫자는 버린다

코드 :

int i, j, temp;
            List<string> array=new List<string>();
            List<int> arrayInt = new List<int>();
            array.AddRange(textBox1.Text.Split(' ').Select(txt => txt.Trim()).ToArray());
            arrayInt = array.Select(s => int.Parse(s)).ToList(); //Converting string array to int array
            for (i = 1; i < array.Count(); i++)
            {
                j = i;
                while (j > 0 && arrayInt[j - 1] > arrayInt[j])
                {
                    temp = arrayInt[j];
                    arrayInt[j] = arrayInt[j - 1];
                    arrayInt[j - 1] = temp;
                    j--;
                }
            }
            for (i = 0; i < array.Count(); i++)
            {                
                textBox2.Text += arrayInt[i] + " ";
            }

소스 배열을 텍스트 상자에 입력하고 삽입 정렬을 사용하여 정렬 된 배열 표시

참고 : 이것은 개인 학습을위한 것이며 숙제 나 그와 비슷한 것이 아닙니다.


  • 답변 # 1

    int 값만 정렬해야하고 값 사이의 텍스트 상자에 어떤 문자가 입력 될지 확실하지 않은 경우 다음과 같이하겠습니다.

    // Split the text box into lines
    var lines = text.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
    var finalText = string.Empty;
    foreach (var line in lines)
    {
        var formattedLine = line;
        // Replace all characters that are not a digit by a space
        var charsToReplace = line.ToCharArray().Where(x => !char.IsDigit(x)).Distinct();
        foreach (var charToReplace in charsToReplace)
        {
            formattedLine = line.Replace(charToReplace, ' ');
        }
        // Replace multiple spaces by single space
        formattedLine = new Regex("[ ]{2,}").Replace(formattedLine, " ").Trim();
        // Split the line at every space, and cast the result to an int
        var intEnumerable = formattedLine.Split(' ').Select(x => int.Parse(x.Trim()));
        // Order the list ascending or descending
        //var orderedListDescending = intEnumerable.OrderByDescending(x => x);
        var orderedList = intEnumerable.OrderBy(x => x);
        // Concatenate each ordered line in a string variable, separated by Environment.NewLine
        finalText += string.Join(" ", orderedList) + Environment.NewLine;
    }
    
    

  • 이전 java - isEnabled () 메소드는 항상 true를 리턴합니다
  • 다음 Jenkins에서 실행되는 docker 이미지 내의 권한 오류