排序的简单写法

Posted sallyshan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序的简单写法相关的知识,希望对你有一定的参考价值。

技术图片

 

 

 

1.快速排序

1. 算法描述

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用。快速排序是一种既不浪费空间又可以快一点的排序算法。

2. 算法步骤

  • 先从数列中取出一个数作为“基准”。
  • 分区过程:将比这个“基准”大的数全放到“基准”的右边,小于或等于“基准”的数全放到“基准”的左边。
  • 再对左右区间重复第二步,直到各区间只有一个数。

3. 算法实现(C语言)

#include <stdio.h>
#include <stdlib.h>
void sort(int a[],int n)

    int i,j,t;
    for(j=0; j<n; j++)
        for(i=0; i<n-1-j; i++)
            if(a[i]>a[i+1])
            
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            

int main()

    /*int a[]= 3,9,2,1,4,5,6;
    int i;
    sort(a,7);
    for(i=0; i<7; i++)
    
        printf("%d ",a[i]);
    */
    int a[10010];
    int i,n;
    printf("输入一个整数:\\n");
    scanf("%d", &n);
    printf("输入待排序的数组:\\n");
    for(i=0; i<n; i++)
    
      scanf("%d",&a[i]);
    
    printf("\\n");
    sort(a,n);
    printf("排序后的数组:\\n");
    for(i=0; i<n; i++)
    
      if(i==0)
          printf("%d",a[i]);
      else
          printf(" %d",a[i]);
    
    printf("\\n");

 

void quicksort(int *a,int low,int high)

    int i=low, j=high;
    if(i<j)
    return;

    int temp=a[low];
    while(i<j)
    
        while(a[j]>=temp&&i<j)
        j--;
        a[i]=a[j];
        while(a[i]<=temp&&i<j)
        i++;
        a[j]=a[i];
    
    a[i]=temp;

    quicksprt(a,low,i-1);
    quicksort(a,i+1,high);

2.javascript算法

var quickSort = function(arr) 
    if (arr.length <= 1)  return arr; 
    var pivotIndex = Math.floor(arr.length / 2);   //基准位置(理论上可任意选取)
    var pivot = arr.splice(pivotIndex, 1)[0];  //基准数
    var left = [];
    var right = [];
    for (var i = 0; i < arr.length; i++)
        if (arr[i] < pivot) 
            left.push(arr[i]);
         else 
            right.push(arr[i]);
        
    
    return quickSort(left).concat([pivot], quickSort(right));  //链接左数组、基准数构成的数组、右数组
;

选择排序 https://segmentfault.com/a/1190000009366805

希尔排序 https://segmentfault.com/a/1190000009461832

以上是关于排序的简单写法的主要内容,如果未能解决你的问题,请参考以下文章

简明快速排序写法

快速排序基本思想,递归写法,python和java编写快速排序

unity的list列表操作(结合Linq整理的一些高级写法SortWhere等)

排序算法突击(Java):冒泡排序

几种排序的优质写法

sort cmp函数的写法 (特判排序 二级排序)