用C#写出:用冒泡法对字符串csdn = "1,2,4,5,9,8,6,23,11,223,123,145,123,156,56,78,从小到大进行排序
时间: 2023-07-27 09:21:27 浏览: 49
可以使用以下代码实现:
```csharp
string csdn = "1,2,4,5,9,8,6,23,11,223,123,145,123,156,56,78";
string[] nums = csdn.Split(',');
for (int i = 0; i < nums.Length - 1; i++)
{
for (int j = 0; j < nums.Length - i - 1; j++)
{
if (int.Parse(nums[j]) > int.Parse(nums[j + 1]))
{
string temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
string sortedCsdn = string.Join(",", nums);
Console.WriteLine(sortedCsdn);
```
输出结果为:`1,2,4,5,6,8,9,11,23,56,78,123,123,145,156,223`。
相关问题
用C#写出:对字符串csdn = "1,8,6,23,223,56,78,9-15";进行排序
对于这个字符串中包含范围的情况,我们可以先将范围展开成单独的数字,再进行排序。具体实现如下:
```csharp
string csdn = "1,8,6,23,223,56,78,9-15";
string[] csdnArray = csdn.Split(',');
List<int> csdnList = new List<int>();
foreach (string s in csdnArray)
{
if (s.Contains("-"))
{
string[] range = s.Split('-');
int start = int.Parse(range[0]);
int end = int.Parse(range[1]);
for (int i = start; i <= end; i++)
{
csdnList.Add(i);
}
}
else
{
csdnList.Add(int.Parse(s));
}
}
csdnList.Sort();
csdn = string.Join(",", csdnList);
Console.WriteLine(csdn);
```
首先还是将字符串按逗号分割成一个字符串数组,然后遍历数组中的每个元素。如果元素包含连字符(即范围),则将范围展开成单独的数字并添加到一个 `List<int>` 中,否则直接将字符串转换成数字并添加到 `List<int>` 中。
最后对 `List<int>` 进行排序,再将排序后的数字转换成字符串并输出即可。
用C#写出:对字符串csdn = "1,8,6,23,223,56,78,9-15";进行排序,并且不对9-15进行展开
如果不想对9-15这样的范围进行展开,可以使用一个标记来记录这个范围,然后在排序时进行特殊处理。具体实现如下:
```csharp
string csdn = "1,8,6,23,223,56,78,9-15";
string[] csdnArray = csdn.Split(',');
List<int> csdnList = new List<int>();
bool hasRange = false;
foreach (string s in csdnArray)
{
if (s.Contains("-"))
{
if (s == "9-15")
{
hasRange = true;
csdnList.Add(-1);
}
else
{
string[] range = s.Split('-');
int start = int.Parse(range[0]);
int end = int.Parse(range[1]);
for (int i = start; i <= end; i++)
{
csdnList.Add(i);
}
}
}
else
{
csdnList.Add(int.Parse(s));
}
}
csdnList.Sort();
if (hasRange)
{
csdnList.Remove(-1);
csdnList.InsertRange(csdnList.FindIndex(x => x > 9), Enumerable.Range(9, 7));
}
csdn = string.Join(",", csdnList);
Console.WriteLine(csdn);
```
这里使用了一个 `bool` 类型的变量 `hasRange` 来标记是否存在需要特殊处理的范围。如果存在这样的范围(即9-15),则将一个特殊的标记(这里使用了-1)添加到 `List<int>` 中,表示这个范围的位置。在排序时,如果存在这个标记,则将其移除并将9到15这些数字插入到标记的位置上。
这样就能够实现对字符串进行排序,同时不对9-15这样的范围进行展开的效果。