zoukankan      html  css  js  c++  java
  • C语言排序之选择排序(一)

      今天主要写了点C的排序,现在想来,语言啥的都如浮云,当然能够做到最简单是最好的,比如用C++可以搞成模板,就省得写一大堆相似的东西,就是一个比较爽的事情,不过有些时候“高级”语言都让我们懒得去思考了,实在是没劲,还是思想重要,最近又对数学和算法充满了兴趣!越发觉得计算机或者带有“智能”系列的东西的神奇了,爽啊。不吐槽了,上今天的代码吧。

     1 /*rand()*/
     2 #include <stdlib.h>
     3 /********************
     4 int rand(void)
     5 void srand(unsigned int);
     6 *********************/
     7 #include <time.h>/*time(NULL)*/
     8 #include <stdio.h>
     9 /*直接插入排序*/
    10 void insort(int s[] , int n);
    11 /*希尔排序,就是将直接排序的增量分成若干组,相同的放一组,组内直接插入*/
    12 void shellsort(int s[] , int n);
    13 int main()
    14 {
    15     int num[10],i=0;
    16     srand(time(NULL));
    17     for(;i<10;i++)
    18     {
    19         num[i] = rand()%100;
    20     }
    21     //insort(num,10);
    22     shellsort(num , 10);
    23     for(i=0;i<10;i++)
    24     {
    25         printf("%d\n",num[i]);
    26     }
    27     return 0;
    28 }
    29 /*直接插入法是指对一个新数组重新一个个插入数据,小->大*/
    30 void insort(int s[],int n)
    31 {
    32     int i,j,key;
    33     /*key为监视,保存数据,1个数据不用比较*/
    34     for(i=1;i < n;i++)
    35     {
    36         key = s[i];
    37         j = i-1;
    38         while(key<s[j]&&j>=0)
    39         {
    40             s[j+1] = s[j];/*数据右移*/
    41             j--;
    42         }
    43         s[j+1] = key;
    44     }
    45 }
    46 /*希尔排序,选择就用希尔!*/
    47 void shellsort(int s[] , int n)
    48 {
    49     int i , j ,d,key;
    50     d = n/2;
    51     while(d>=1)
    52     {
    53         for(i = d ; i<n ; i++)
    54         {
    55             key = s[i];
    56             j = i -d;
    57             while(key < s[j]&&j>=0)
    58             {
    59                 s[j+d] = s[j];
    60                 j = j-d;
    61             }
    62             s[j+d] = key;
    63         }
    64         d = d/2;
    65     }
    66 }

    2013-01-19

  • 相关阅读:
    ArrayList removeRange方法分析
    LinkedHashMap源码分析(基于JDK1.6)
    LinkedList原码分析(基于JDK1.6)
    TreeMap源码分析——深入分析(基于JDK1.6)
    51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
    51 NOD 1049 最大子段和 动态规划 模板 板子 DP
    51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
    8月20日 训练日记
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/accipiter/p/2867198.html
Copyright © 2011-2022 走看看