首页 > 编程知识 正文

排序excel怎么设置,姓氏笔画排序规则

时间:2023-05-05 14:03:56 阅读:261422 作者:1016

NowCoder140–排序 题目描述

给定一个数组,请你编写一个函数,返回该数组排序后的形式。

示例1 输入[5,2,3,1,4]返回值

[1,2,3,4,5]

示例2 输入[5,1,6,2,5]返回值[1,2,5,5,6]

备注:

*数组的长度不大于100000,数组中每个数的绝对值不超过 1 0 9 10^9 109.

代码: package com.xujinshan.nowcoder.nc140;import java.util.Arrays;/** * @Author: xujinshan361@163.com * NowCoder140 -- 排序 *//** * 冒泡排序,时间复杂度过高,牛客网不能通过 * 思想: * 首先拿第一个元素和后面的所有一个个的比较,如果后面的大就交换,所以始终保证第一个 * 元素是最小的,然后再第二第三,以此类推。 */class Solution01 { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * * @param arr int整型一维数组 待排序的数组 * @return int整型一维数组 */ public int[] MySort(int[] arr) { // write code here int length = arr.length; for (int i = 0; i < length; i++) { for (int j = 0; j < length - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; }}/** * 直接调用Arrays.sort() 函数直接通过牛客网测试 */class Solution02 { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * * @param arr int整型一维数组 待排序的数组 * @return int整型一维数组 */ public int[] MySort(int[] arr) { Arrays.sort(arr); return arr; }}/** * 选择排序:无法通过牛客网测试,时间复杂度过高 * 选择排序与冒泡排序有一点像,选择排序是默认前面都是已经排好序的,然后从后面选择 * 最小的放在前面拍好的后面,首先第一轮循环的时候默认的排序好的为空,然后从后选择 * 最小的放在数组的第一个位置,然后从剩下的找出最小的放到数组的第二个位置,第三轮 * 的时候默认前面俩个已经拍好序了,然后一直进行下去。 */class Solution03 { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * * @param arr int整型一维数组 待排序的数组 * @return int整型一维数组 */ public int[] MySort(int[] arr) { // 总共要经过 N-1 轮比较 for (int i = 0; i < arr.length - 1; i++) { int min = i; // 每轮需要比较的次数 N-i for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[min]) { // 记录目前能找到的最小值元素的下标 min = j; } } // 将找到的最小值和i位置所在的值进行交换 if (i != min) { int tmp = arr[i]; arr[i] = arr[min]; arr[min] = tmp; } } return arr; }}/** * 插入排序:通过牛客测试,效率贼低 */class Solution04 { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * * @param arr int整型一维数组 待排序的数组 * @return int整型一维数组 */ public int[] MySort(int[] arr) { // 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的 for (int i = 1; i < arr.length; i++) { // 记录要插入的数据 int tmp = arr[i]; // 从已经排序的序列最右边的开始比较,找到比其小的数 int j = i; while (j > 0 && tmp < arr[j - 1]) { arr[j] = arr[j - 1]; j--; } // 存在比其小的数,插入 if (j != i) { arr[j] = tmp; } } return arr; }}public class NowCoder140 { public static void main(String[] args) { System.out.println(Arrays.toString(new Solution04().MySort(new int[]{5, 2, 3, 1, 4}))); }} 结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。