zoukankan      html  css  js  c++  java
  • 冒泡排序、插入排序和归并排序代码

    冒泡排序

    procedure bubbleSort(A[1-n])

    Begin

       for i=1 to n-1

            for j=n down to i+1 do

                  if A[j-1]>A[j] then

                  begin

                       temp=A[j-1]

                       A[j-1]=A[j]

                       A[j]=temp

             end

      end

    插入排序

    void insertion_sort(void) 

        int i, j, key;

        for (j = 1; j < LEN; j++) {

                key = a[j]; 

                i = j - 1; 

                while (i >= 0 && a[i] > key) {

                              a[i+1] = a[i]; 

                                i--; 

                 }

               a[i+1] = key; 

         }

    }

    归并排序

    #include <stdio.h>

    #define LEN 8

    int a[LEN] = { 5, 2, 4, 7, 1, 3, 2, 6 };

    void merge(int start, int mid, int end)

    {

             int n1 = mid - start + 1;

             int n2 = end - mid;

             int left[n1],

             right[n2];

             int i, j, k;

             for (i = 0; i < n1; i++) /* left holds a[start..mid] */

                           left[i] = a[start+i];

             for (j = 0; j < n2; j++) /* right holds a[mid+1..end] */

                           right[j] = a[mid+1+j];

             i = j = 0;

             k = start;

             while (i < n1 && j < n2) {

                      if (left[i] < right[j])

                             a[k++] = left[i++];

                      else

                              a[k++] = right[j++];

              }

             while (i < n1) /* left[] is not exhausted */

                     a[k++] = left[i++];

             while (j < n2) /* right[] is not exhausted */

                    a[k++] = right[j++];

    }

    void sort(int start, int end)

    {

            int mid;

            if (start < end) {

                      mid = (start + end) / 2;

                      printf("sort (%d-%d, %d-%d) %d %d %d %d %d %d %d %d ",

                                  start, mid, mid+1, end, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]);

                      sort(start, mid);

                      sort(mid+1, end); merge(start, mid, end);

                      printf("merge (%d-%d, %d-%d) to %d %d %d %d %d %d %d %d ",

                                 start, mid, mid+1, end, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]);

             }

    }

    int main(void){

             sort(0, LEN-1);

             return 0;

    }

  • 相关阅读:
    Git 创建仓库并拉取代码
    Linux export 命令
    Linux ps 命令
    Linux sed 命令
    Linux find 命令
    Linux chmod 命令
    Linux chgrp 命令
    解除/配置 linux/nginx 的 tcp 连接(nginx配置文件日常配置推荐)
    更改Ubuntu的apt源
    anaconda 各版本的下载地址
  • 原文地址:https://www.cnblogs.com/startover/p/3141669.html
Copyright © 2011-2022 走看看