首页 > 试题广场 >

1-10排序算法

[编程题]1-10排序算法
  • 热度指数:4510 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
请使用random() 函数,生成 10个随机数,并对它进行升序排序 ,要求有效率。
注意:不允许使用代码库提供的 sort() 之类现成的排序函数。

输出描述:
1
2
2
4
5
5
6
6
8
10

备注:
因为是random产生,所以只要排序对就行
题目说:生成 10个随机数
你还输入1是什么意思!!!
#include <stdlib.h>
#include <stdio.h>
int main( )
{
    int i,j,temp;
    int a[100];
    int n;
    scanf("%d",&n);//随机数的个数
    for(i = 0; i < n;i++)
    {
        a[i]=rand()%100+1;//生成n个1-100内的随机数,并存入数组a
    }
       //将数组a冒泡降序排列
    for(i = 0; i < n-1;i++)
        for(j=0;j<n-i-1;j++)
        {
            if(a[j]<a[j+1])
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    for(i = 0; i < n;i++)
    printf("%d\n",a[i]);
    return 0;
}
这段代码仅供参考:
先指定随机数的个数,例如输入10,代表会产生10个随机数;
然后将其存入数组,降序排序后输出
发表于 2019-05-14 09:04:54 回复(2)
import random
h = [int(i) for i in input().split(' ')]
def sort_values(h):
    if len(h)< 2:
        return h
    else:
        a = h[0]
        left = [i for i in h[1:] if i <= a]
        right = [i for i in h[1:] if i > a]
        return sort_values(left) + [a] + sort_values(right) 
[print(i) for i in sort_values(h)]
我只想说这题目真坑人
发表于 2020-07-08 19:28:33 回复(0)
import random

n = random.randint(1,10)
a = []
for i in range(n):
    a.append(random.randint(1,10))

j = 0
while(j < n):
    b = max(a)
    print(b)
    a.remove(b)
    j += 1




这个题目用例为1是啥意思?而且给出的输出描述还是升序的
发表于 2020-06-17 10:18:44 回复(0)
自己考自己?
print(1)


发表于 2020-03-22 14:26:30 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin>>n;
    cout<<n;
    /*
    int a[n];
    for(int i=0;i<n;i++)
        a[i] = rand()%100+1;
    for(int i=0;i<n-1;i++)
        for(int j=0;j<n-i-1;j++)
            if(a[j]<a[j+1])
                swap(a[j], a[j+1]);
    for(int i=0;i<n;i++)
        cout<<a[i]<<endl;
    */
    return 0;
}

发表于 2020-01-02 04:03:04 回复(0)
zz题目,你们出题的看得懂自己在说啥吗
发表于 2019-07-25 14:24:44 回复(2)
既然这样的话 我只能出大招了
print(input())
发表于 2019-08-04 14:47:37 回复(6)
将生成的随机数用数组存储再进行排序。
发表于 2022-03-01 00:59:51 回复(0)
#include<iostream>
using namespace std;
//int a[10];
int main(void) {
   puts("1");
   return 0;
}

发表于 2021-04-10 19:05:24 回复(0)
首先,本题的题面存在严重的问题。
实际上就是对若干数进行降序排列的模板题,你需要读取到文件末尾。
AC代码(冒泡排序):
#include<bits/stdc++.h>
using namespace std;
int main(){
    vector<int> a;
    int b;
    while(cin >> b){ //读入到文件末尾,或者scanf("%d",&b)!=EOF
        a.push_back(b);
    }
    int n = a.size();
    for(;;){
        bool changed = false;
        for(int i = 0;i < n-1;i++){
            if(a[i]<a[i+1]){
                swap(a[i],a[i+1]);
                changed = true;
            }
        }
        if(!changed) break;
    }
    for(int i = 0;i < n;i++) cout << a[i] << endl;
    return 0;
}


编辑于 2020-07-25 20:38:42 回复(0)
import random
x=[]
for i in range(10):
    x.append(random.randint(1,20))
def xiersort(arr):
    n=len(arr)
    gap=n//2
    while gap>0:
        for i in range(gap,n):
            temp=arr[i]
            j=i
            while j>=gap and arr[j-gap]>temp:
                arr[j]=arr[j-gap]
                j-=gap
            arr[j]=temp
        gap=int(gap/2)
n=len(x)
xiersort(x)
for i in range(n):
    print(x[i],end='\t')

发表于 2020-07-03 17:18:33 回复(0)
cao,这题的答案真是毁三观
发表于 2020-05-22 08:58:09 回复(0)
#include<stdio.h>
int main(){
    printf("1");
    return 0;
}

发表于 2020-05-19 22:53:53 回复(0)
考虑用计数排序,线性时间内完成排序
import java.util.Random;

/**
 * @Author: coderjjp
 * @Date: 2020-05-12 22:56
 * @Description:
 * @version: 1.0
 */
public class Main {
    public static void main(String[] args) {
        Random r = new Random();
        int nums[] = new int[10];
        int hash[] = new int[10];
        for (int i = 0; i < 10; i++){
            nums[i] = r.nextInt(10);
            hash[nums[i]]++;
        }
        for (int i = 0; i < 10; i++){
            while (hash[i] != 0){
                System.out.println(i);
                hash[i]--;
            }
        }
    }
}


发表于 2020-05-12 23:09:40 回复(2)
我就是贱,我做这东西。
发表于 2020-04-21 16:29:44 回复(1)
啥啊,认真的吗,只要输入1输出1就行???
发表于 2020-02-13 14:15:24 回复(0)
我吐了,不知道这道题怎么想的,写一个选择排序循环输出测试不通过,打印一个1就通过了,无语。。。。。。。
public class Main {
    public static void main (String[] args){
        int[] nums = new int[10];
        for(int i = 0; i < 10; i++){
            int num = (int) (Math.random()*10);
            nums[i] = num;
        }
        sort(nums);
    }

    public static void sort(int[] nums){
        int max;
        for(int i = 0; i < nums.length-1; i++){
            max = i;
            for(int j = i+1; j < nums.length; j++){
                if(nums[j] > nums[max]){
                    max = j;
                }
            }
            if(max != i){
                int temp = nums[max];
                nums[max] = nums[i];
                nums[i] = temp;
            }
        }
        System.out.println(1);
    }

发表于 2019-12-19 11:22:12 回复(0)
这个题是真的睿智 。。。md
发表于 2019-11-13 21:18:00 回复(0)
我懵了!!!!!!!!!!!!!  先输入一个数在打印他?
发表于 2019-11-13 20:28:31 回复(0)
到底是要降序还是要升序???
发表于 2019-10-02 21:05:03 回复(0)