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 }
  • 相关阅读:
    ArcGIS.Server.9.3.DotNet的ADF与ASP.NET AJAX
    ArcGIS.Server.9.3和ArcGIS API for JavaScript保存自定义图形(十)
    android开发我的新浪微博客户端载入页面UI篇(1.1)
    ArcGIS.Server.9.3和ArcGIS API for JavaScript实现距离量算和面积量算(九)
    ArcGIS.Server.9.3和ArcGIS API for JavaScript实现点、线、面的buffer分析(十一)
    android开发我的新浪微博客户端载入页面sqlite篇(1.2)
    市净率PB
    转 未来的GDI:WPF技术纵览
    转 LUA语言学习教程
    sl下的两种跨线程访问方式
  • 原文地址:https://www.cnblogs.com/ranzhong/p/13735302.html
Copyright © 2011-2022 走看看