namespace _7._17day01
{
public struct MyStruct
{
public string _name;
public int _count;
}
internal class Program
{
static void Main(string[] args)
{
string str = "abcdacbdcbacbdacbcbacb";
MyStruct[] myStruct = myStructs(str);
foreach (var item in myStruct)
{
Console.WriteLine(item._name+"==="+item._count);
}
}
public static MyStruct[] myStructs(string str)
{
int x = 0;
MyStruct[] myStruct = new MyStruct[x];
for (int i = 0; i < str.Length; i++)
{
bool b = true;
for (int j = 0; j < x; j++)
{
if (myStruct[j]._name.Equals(str[i].ToString()))
{
myStruct[j]._count++;
b = false;
}
}
if (b)
{
x++;
Array.Resize(ref myStruct, x);
myStruct[x - 1]._name = str[i].ToString();
myStruct[x - 1]._count=1;
}
}
for (int i = 0; i < myStruct.Length; i++)
{
for (int j = 0; j < myStruct.Length-1; j++)
{
if (myStruct[j]._count > myStruct[j + 1]._count)
{
MyStruct m;
m= myStruct[j];
myStruct[j]=myStruct[j+1];
myStruct[j+1]=m;
}
}
}
return myStruct;
}
}
}
可以将里面的冒泡排序改为
for (int i = 0; i < myStruct.Length; i++)
{
for (int j = 0; j < myStruct.Length-1; j++)
{
if (myStruct[j]._count > myStruct[j + 1]._count)
{
MyStruct m;
m= myStruct[j];
myStruct[j]=myStruct[j+1];
myStruct[j+1]=m;
}
}
}
直接用 Array.Sort(myStruct,(x,y)=>x._count-y._count);替换掉 用sort方法排序
关于Array.Resize介绍
Array.Resize
是 C# 中的一个方法,它允许你改变数组的大小。这个方法定义在 System
命名空间下的 Array
类中。Array.Resize
并不是直接修改原始数组的大小,而是创建一个新的数组,并根据需要复制原始数组的内容到新数组中。
语法
public static T[] Resize<T>(ref T[] array, int newSize);
T[]
是数组的类型,T
是数组元素的类型参数。ref T[] array
是原始数组的引用。int newSize
是新数组的大小。
参数
array
:要调整大小的数组。newSize
:数组的新大小。
返回值
Array.Resize
返回一个新的数组,其大小为 newSize
。如果 newSize
大于原始数组的大小,新数组的额外部分将被初始化为类型的默认值。如果 newSize
小于原始数组的大小,新数组将只包含原始数组的前 newSize
个元素。