c#:排序算法的实现。分别利用冒泡、直接插入、直接选择算法实现排序(升序)。
2个回答
2013-07-03
展开全部
#region 冒泡排序( 100k无序0-100k 21秒 )
void mppx冒泡排序(int[] pxsz)
{
for (int j = 1; j < pxsz.Length; j++)
{
for (int i = 0; i < pxsz.Length - j; i++)
{
if (pxsz[i] > pxsz[i + 1])
{
int temp = pxsz[i + 1];
pxsz[i + 1] = pxsz[i];
pxsz[i] = temp;
}
}
}
}
#endregion
#region 选择排序( 100k无序0-100k 10秒 )
void xzpx选择排序(int[] pxsz)
{
int min_index;
for (int i = 0; i < pxsz.Length - 1; i++)
{
min_index = i;
for (int j = i + 1; j < pxsz.Length; j++)//每次扫描选择最小项
{
if (pxsz[j] < pxsz[min_index]) min_index = j;
}
if (min_index != i)//找到最小项交换,即将这一项移到列表中的正确位置
{
int temp = pxsz[i];
pxsz[i] = pxsz[min_index];
pxsz[min_index] = temp;
}
}
}
#endregion
#region 插入排序( 100k无序0-100k 5秒 )
void crpx插入排序(int[] pxsz)
{
for (int i = 1; i < pxsz.Length; i++)//循环从第二个数组元素开始,因为arr[0]作为最初已排序部分
{
int temp = pxsz[i];//temp标记为未排序第一个元素
int j = i - 1;
while (j >= 0 && pxsz[j] > temp)/*将temp与已排序元素从小到大比较,寻找temp应插入的位置*/
{
pxsz[j + 1] = pxsz[j];
j--;
}
pxsz[j + 1] = temp;
}
}
#endregion
void mppx冒泡排序(int[] pxsz)
{
for (int j = 1; j < pxsz.Length; j++)
{
for (int i = 0; i < pxsz.Length - j; i++)
{
if (pxsz[i] > pxsz[i + 1])
{
int temp = pxsz[i + 1];
pxsz[i + 1] = pxsz[i];
pxsz[i] = temp;
}
}
}
}
#endregion
#region 选择排序( 100k无序0-100k 10秒 )
void xzpx选择排序(int[] pxsz)
{
int min_index;
for (int i = 0; i < pxsz.Length - 1; i++)
{
min_index = i;
for (int j = i + 1; j < pxsz.Length; j++)//每次扫描选择最小项
{
if (pxsz[j] < pxsz[min_index]) min_index = j;
}
if (min_index != i)//找到最小项交换,即将这一项移到列表中的正确位置
{
int temp = pxsz[i];
pxsz[i] = pxsz[min_index];
pxsz[min_index] = temp;
}
}
}
#endregion
#region 插入排序( 100k无序0-100k 5秒 )
void crpx插入排序(int[] pxsz)
{
for (int i = 1; i < pxsz.Length; i++)//循环从第二个数组元素开始,因为arr[0]作为最初已排序部分
{
int temp = pxsz[i];//temp标记为未排序第一个元素
int j = i - 1;
while (j >= 0 && pxsz[j] > temp)/*将temp与已排序元素从小到大比较,寻找temp应插入的位置*/
{
pxsz[j + 1] = pxsz[j];
j--;
}
pxsz[j + 1] = temp;
}
}
#endregion
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-03
展开全部
//冒泡排序
public static void Sort(int[] array)
{
int[] arr=new int[]{45,12,44,4,5};
for(int j=1;j<arr.Length;j++)
{//外循环每次把参与排序的最大数排在最后
for(int i=0;i<arr.Length-j;i++)
{ //内层循环负责对比相邻的两个数,并把最大的排在后面
if(arr[i]>arr[i+1])
{ //如果前 一个数大于后一个数,则交换两个数
int temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
}
//用 一个循环访问数组里的元素并打印
for(int j=0;j<arr.Length;j++)
{
Console.Write(arr[i]+"");
}
}
//选择排序
class Program { static List<int> list = new List<int>() { 72, 54, 59, 30, 31, 78, 2, 77, 82, 72 }; static void Main(string[] args) { Choice(); PrintList(); } static void Choice() { int temp = 0; int minIndex = 0; for (int i = 0; i < list.Count; i++) { minIndex = i; for (int j = i; j < list.Count; j++) { //注意这里比较的是list[minIndex] if (list[j] < list[minIndex]) { minIndex = j; } } temp = list[minIndex]; list[minIndex] = list[i]; list[i] = temp; PrintList(); } } private static void PrintList() { foreach (var item in list) { Console.Write(string.Format("{0} ", item)); } Console.WriteLine(); } } //直接插入 ///<summary> ///直接插入排序算法 ///summary> publicclassDirectInsertSort:IAction { #regionIAction成员 publicvoidAction() { int[]array=Program.RandomArray(); for(inti=1;i<array.Length;i++) { if(array[i]<array[i-1]) { inttem=array[i]; intj=0; for(j=i-1;j>=0&&tem<array[j];j--) { array[j+1]=array[j]; } array[j+1]=tem; } } } #endregion }
public static void Sort(int[] array)
{
int[] arr=new int[]{45,12,44,4,5};
for(int j=1;j<arr.Length;j++)
{//外循环每次把参与排序的最大数排在最后
for(int i=0;i<arr.Length-j;i++)
{ //内层循环负责对比相邻的两个数,并把最大的排在后面
if(arr[i]>arr[i+1])
{ //如果前 一个数大于后一个数,则交换两个数
int temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
}
//用 一个循环访问数组里的元素并打印
for(int j=0;j<arr.Length;j++)
{
Console.Write(arr[i]+"");
}
}
//选择排序
class Program { static List<int> list = new List<int>() { 72, 54, 59, 30, 31, 78, 2, 77, 82, 72 }; static void Main(string[] args) { Choice(); PrintList(); } static void Choice() { int temp = 0; int minIndex = 0; for (int i = 0; i < list.Count; i++) { minIndex = i; for (int j = i; j < list.Count; j++) { //注意这里比较的是list[minIndex] if (list[j] < list[minIndex]) { minIndex = j; } } temp = list[minIndex]; list[minIndex] = list[i]; list[i] = temp; PrintList(); } } private static void PrintList() { foreach (var item in list) { Console.Write(string.Format("{0} ", item)); } Console.WriteLine(); } } //直接插入 ///<summary> ///直接插入排序算法 ///summary> publicclassDirectInsertSort:IAction { #regionIAction成员 publicvoidAction() { int[]array=Program.RandomArray(); for(inti=1;i<array.Length;i++) { if(array[i]<array[i-1]) { inttem=array[i]; intj=0; for(j=i-1;j>=0&&tem<array[j];j--) { array[j+1]=array[j]; } array[j+1]=tem; } } } #endregion }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询