数据结构之基础排序(选择排序、插入排序、冒泡排序)

来源:互联网 发布:薰衣草精油淘宝 编辑:程序博客网 时间:2024/05/16 06:57

  排序在代码中用的非常普遍,所以今天我们来学下最基础的三种排序,

如果你已经烂熟于心,请跳过本文。

注:我的代码一般没有注释,我觉得没啥必要,都是基础挺简单的。

#include <stdio.h>#include <stdlib.h>void print(int array[], int len){     int i = 0;          for (i = 0; i < len; i++)     {         printf("%d ", array[i]);     }          printf("\n");}void swap(int array[], int i, int j){     int temp = array[i];     array[i] = array[j];     array[j] = temp;}void SelectSort(int array[], int len){      int i = 0;     int j = 0;     int k = -1;          for (i = 0; i < len; i++)     {         k = i;                  for (j = i; j < len; j++)         {             if (array[j] < array[k])             {                 swap(array, j, k);             }         }     }}void InsertSort(int array[], int len){    int i = 0;    int j = 0;    int k = -1;    int temp = -1;        for (i = 1; i < len; i++)    {        k = i;         temp = array[k];                for (j = i - 1; (j >= 0) && (array[j] > temp); j--)        {            array[j + 1] = array[j];            k = j;        }                array[k] = temp;    }   }void BubbleSort(int array[], int len){    int i = 0;    int j = 0;    int exchange = 1;        for (i = 0; (i < len) && exchange; i++)    {        exchange = 0;                for (j = i + 1; j < len; j++)        {            if (array[i] > array[j])            {                swap(array, i, j);                    exchange = 1;                     }            }        }     }int main(int argc, char *argv[]){    int a[] = {22,44,33,88,66,11};        int len = sizeof(a) / sizeof(int);        print(a, len);         //SelectSort(a, len);    InsertSort(a, len);    //BubbleSort(a, len);        print(a, len);      system("PAUSE");    return 0;}
不管是选择排序还是插入排序还是冒泡排序,时间复杂度都是O(n^2),

在一些对算法要求比较高的场合,就不是很适用,所以,后面我会继续写一些高效率的排序算法。


0 0
原创粉丝点击