zoukankan      html  css  js  c++  java
  • 数列排序

    其实用现成的c++ 库中的sort排序就可以完美解决 但是为了体会算法的本质 我还要敲一遍别的

    问题描述
    给定一个长度为n的数列,将这个数列按从小到大的顺序排列。
    1<=n<=200
    输入格式
    第一行为一个整数n。
    第二行包含n个整数,为待排序的数,每个整数的绝对值小于
    10000。
    输出格式
    输出一行,按从小到大的顺序输出排序后的数列。
    样例输入
    5
    8 3 6 4 9
    样例输出
    3 4 6 8 9
     1 //快速排序算法
     2 #include "stdio.h"
     3 #include "stdlib.h"
     4 void Print(int data[],int n)//输出函数
     5 {
     6     int i;
     7     for(i=0;i<n;i++)
     8     {
     9     printf("%2d",data[i]);
    10     }
    11 }
    12 int Splid(int *data,int pre,int rear)//取 mid
    13 {
    14     int temp=data[pre];
    15     if(pre<rear)
    16     {
    17         while(data[rear]>=temp&&pre<rear)
    18             rear--;
    19         data[pre]=data[rear];
    20         while(data[pre]<temp&&pre<rear)
    21             pre++;
    22         data[rear]=data[pre];
    23     }
    24     data[pre]=temp;
    25     return pre;
    26 }
    27 void Quicksort(int *data,int pre,int rear)//递归排序
    28 {
    29     int mid;
    30     if(pre<rear)
    31         
    32     {
    33         mid=Splid(data,pre,rear);
    34         Quicksort(data,pre,mid-1);
    35         Quicksort(data,mid+1,rear);
    36     }
    37 }
    38 int main(void)
    39 {
    40     int n,i;
    41     int *data;
    42     data=(int *)malloc(sizeof(int)*n);//动态分配
    43     printf("Enter n:");
    44     scanf("%d",&n);
    45     for(i=0;i<n;i++)
    46     {
    47         scanf("%d",&data[i]);
    48     }
    49     Quicksort(data,0,n-1);//排序
    50     Print(data,n);//输出
    51     return 0;
    52 }

     关于快速排序:https://www.runoob.com/w3cnote/quick-sort.html

     1 #include <stdio.h>
     2 void swap(int* a, int *b)
     3 {
     4     int c = *a;
     5     *a = *b;
     6     *b = c;
     7     printf("%d %d
    ",*a,*b);
     8 }
     9 void sort(int* arr, int len)
    10 {
    11     if (len <= 1) return;
    12     int x = arr[len-1];
    13     int i = 0, j = 0;
    14     while (j < len - 1)
    15     {
    16         if (arr[j] < x){
    17             swap(&arr[i], &arr[j]);
    18         i++;
    19     }
    20     j++;
    21 }
    22 swap(&arr[i], &arr[len-1]);
    23 sort(arr, i);
    24 sort(arr + i + 1, len - i - 1);
    25 }
    26 int main(void)
    27 {
    28     int i, n, a[200];
    29     scanf("%d", &n);
    30     for (i = 0; i < n; i++)
    31         scanf("%d", &a[i]);
    32     sort(a, n);
    33     for (i = 0; i < n; i++)
    34         printf("%d ", a[i]);
    35     printf("
    ");
    36     return 0;
    37 }
  • 相关阅读:
    Rainmeter 雨滴桌面 主题分享
    行人检測之HOG特征(Histograms of Oriented Gradients)
    const和readonly差别
    ADB命令解析
    Java实现 蓝桥杯VIP 算法训练 接水问题
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
  • 原文地址:https://www.cnblogs.com/ranzhong/p/13735302.html
Copyright © 2011-2022 走看看