租好服务器咋做网站呢,wordpress 文章结尾处,今天上海最新新闻事件,建站快车的应用场景排序初探 文章目录 冒泡排序1、概念2、冒泡排序的基本原理3、代码实现思考1 随机数冒泡排序思考2 函数实现排序 冒泡排序
1、概念
将一组无序的记录序列调整为有序的记录序列#xff08;升、降序#xff09;
2、冒泡排序的基本原理
两两相邻#xff0c;不停比较#x…排序初探 文章目录 冒泡排序1、概念2、冒泡排序的基本原理3、代码实现思考1 随机数冒泡排序思考2 函数实现排序 冒泡排序
1、概念
将一组无序的记录序列调整为有序的记录序列升、降序
2、冒泡排序的基本原理
两两相邻不停比较不停交换比较n轮
3、代码实现
第一步 如何比较数组中两两相邻的数
从头开始第n个数和第n1个数比较
for(int n 0; n arr.Length - 1; n ){ //arr.Length-1 因为数组下标是从0开始所以比较次数也就相当于数组个数-1if( arr[n] arr[n1]){//第二步 交换位置int temp arr[n];arr[n] arr[n1];arr[n1] temp;}
}//第三步 换m轮 有m个数比较m轮
int[] arr new int[]{8,7,6,1,5,4,2,6,3,9};
for(int m 0; m arr.Length; m){for(int n 0; n arr.Length - 1; n ){if( arr[n] arr[n1]){int temp arr[n];arr[n] arr[n1];arr[n1] temp;}}
}
//查看排序结果
for(int i 0; iarr.Length;i){Console.WriteLine(arr[i]);
}第四步 优化
int[] arr new int[]{8,7,6,1,5,4,2,6,3,9};
1、确定位置最大的数字不用比较确定一轮极值最大、最小值已经放到了对应的位置所以每完成n轮后面位置的数就不用再参与比较了
for(int m 0; m arr.Length; m){for(int n 0; n arr.Length - 1 - m; n ){if( arr[n] arr[n1]){int temp arr[n];arr[n] arr[n1];arr[n1] temp;}}
}
for(int i 0; iarr.Length;i){Console.WriteLine(arr[i]);
}int[] arr new int[]{8,7,6,1,5,4,2,6,3,9};
再优化
bool isSort false;
for(int m 0; m arr.Length; m){isSort false;for(int n 0; n arr.Length - 1 - m; n ){if( arr[n] arr[n1]){isSort true;int temp arr[n];arr[n] arr[n1];arr[n1] temp;}}
}
//当一轮结束后如果isSort是false就是最终排序了不需要再去多余交换了
if(!isSort){break;
}
for(int i 0; iarr.Length;i){Console.WriteLine(arr[i]);
}思考1 随机数冒泡排序
//定义一个数组长度为20每个元素值随机0~100
//使用冒泡排序进行升序
int[] arr new int[20];
Random random new Random();
for (int i 0; i arr.Length; i)
{arr[i] random.Next(0, 101);Console.Write(arr[i] );
}//外层轮数
for (int i 0; i arr.Length; i)
{//内层比较for (int j 0; j arr.Length - 1 - i; j){//做比较满足条件交换if (arr[j] arr[j 1]){int temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}
}
Console.WriteLine();
for (int i 0; i arr.Length; i)
{Console.Write(arr[i] );
}思考2 函数实现排序
Random random new Random();
int[] arr new int[10];
for (int i 0; i arr.Length; i)
{arr[i] random.Next(1,21);Console.Write(arr[i] );
}
Sort(arr, false);
Console.WriteLine();
for (int i 0; i arr.Length; i)
{Console.Write(arr[i] );
}
static int[] Sort(int[] array,bool isAscendingOrder)
{int temp; bool order;for (int i 0; i array.Length; i){for (int j 0; j array.Length - 1 -i; j){order isAscendingOrder ? array[j] array[j 1] : array[j] array[j 1];if (order){temp array[j];array[j] array[j 1];array[j 1] temp;}}}return array; //数组是引用类型不用new直接改
}