冒泡排序 冒泡排序c# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string[] p = new string[listView1.Columns.Count]; for (int i = 0; i < listView1.Columns.Count-1; i++) { p[i] = listView1.Items[i].Text; }比如说listView1的列数是4那么数组p的长度是4for循环等价于for(int i=0;i<3;i++){}也就是说p[3]始终未null下面排序遍历到p[3]的时候,就出现“未将对象引用设置到对象的实例”咯 改成string[] p = new string[listView1.Columns.Count]; for (int i = 0; i < listView1.Columns.Count; i++) { p[i] = listView1.Items[i].Text; } 谢谢,实例问题已经解决了!我还有个问题,现在的代码是给listview中第一列进行排序,我想进行第二列排序应该怎么改啊? 1.string[] p = new string[listView1.Columns.Count];这里按照treeview的列, p[i] = listView1.Items[i].Text;这又变成行,显然这里是有问题的;2.报异常那里设置断点看哪个为null就知道原因了;3.listView1.Items[i].Text; 这里截取 比如用substring p[i] = listView1.Items[i]..SubItems[0].Text 这就是第二列了 冒泡排序变成快速排序 // 快速排序算法 // <param name="data">排序数组</param> // <param name="low">排序上限</param> // <param name="high">排序下限</param> static void QuickRun(int[] data, int low, int high) { //简单设定中间值,并以此为一趟快排的分割点 //注意这里是一个简单的算法,如果想对这个算法优化的话,可以采取随机的方法来获取分割点 int middle = data[(low + high) / 2]; int i = low;//设定移动上标 int j = high;//设定移动下标 do//直至分割出两个序列 { while (data[i] < middle && i < high)//扫描中值左边元素 i++; while (data[j] > middle && j > low)//扫描值右边元素 j--; if (i <= j)//找到了一对可以交换的值 { int temp = data[i]; data[i] = data[j]; data[j] = temp; i++; j--; } } while (i<=j); if (j > low)//递归对比分割点元素都小的那个序列时行快速排序 QuickRun(data, low, j); if (i < high)//递归对比分割点元素都大的那个序列时行快速排序 QuickRun(data, i, high); } 不支持此接口c# C#中如何使用DirectShow调用声卡?大家帮帮忙哦! 求各位亲们解答,关于C#加密txt文件的一些问题 C#修复文件 如何将DataGridView直接数据操作(删除、添加、更新)直接回写至数据库 如果使用回车键(高手请进) 关于2个form之间的传值 关于WINFORM的问题,大家进。。 如何在WinForm DataGrid中实现象True DBGrid中的ValueItems的Translate功能 困困困 请教一个字符串判断的问题 json多层数组反序列化。
for (int i = 0; i < listView1.Columns.Count-1; i++)
{
p[i] = listView1.Items[i].Text;
}比如说listView1的列数是4
那么数组p的长度是4
for循环等价于
for(int i=0;i<3;i++){}
也就是说p[3]始终未null
下面排序遍历到p[3]的时候,就出现“未将对象引用设置到对象的实例”咯
string[] p = new string[listView1.Columns.Count];
for (int i = 0; i < listView1.Columns.Count; i++)
{
p[i] = listView1.Items[i].Text;
}
2.报异常那里设置断点看哪个为null就知道原因了;
3.listView1.Items[i].Text; 这里截取 比如用substring
// 快速排序算法
// <param name="data">排序数组</param>
// <param name="low">排序上限</param>
// <param name="high">排序下限</param>
static void QuickRun(int[] data, int low, int high)
{
//简单设定中间值,并以此为一趟快排的分割点
//注意这里是一个简单的算法,如果想对这个算法优化的话,可以采取随机的方法来获取分割点
int middle = data[(low + high) / 2];
int i = low;//设定移动上标
int j = high;//设定移动下标
do//直至分割出两个序列
{
while (data[i] < middle && i < high)//扫描中值左边元素
i++;
while (data[j] > middle && j > low)//扫描值右边元素
j--;
if (i <= j)//找到了一对可以交换的值
{
int temp = data[i];
data[i] = data[j];
data[j] = temp;
i++;
j--;
}
} while (i<=j);
if (j > low)//递归对比分割点元素都小的那个序列时行快速排序
QuickRun(data, low, j);
if (i < high)//递归对比分割点元素都大的那个序列时行快速排序
QuickRun(data, i, high);
}