c语言之排序

常见排序手法:

一冒泡排序:

在数列中找最大值或者最小值依次排序。通过依次找到比当前在数组位置中值小的或者大的不断交换来实现的:

1、后面如果有比第一个数字大的就和第一个交换

2、后面如果有比第二个数字大的就和第二个交换

3、···········

[0]3          [1] 2        [2] 1       [3] 4         [4]5         [5]6

[0] 1          [1] 2        [2] 3       [3] 4         [4]5         [5]6

从小到大从大开始排序:

假设有一个count(表示几位数)数的排序

int  j , k , count , temp ;

int array [];

for (k = count - 2 ; k > 0 ; k --){

    for ( j = 0 ; j < k ; j ++ ){

        if ( array [ j ] > array [ j + 1 ] ){

            temp = array [ j ];

            array [ j ] = array [ j + 1 ];

            array [ j + 1 ] = temp ;

        }

    }

}

  

从小到大从小开始排序:

假设有一个count(表示几位数)数的排序

int  j , k,count,temp ;

int array[];

for( k = 0 ; k < count-1 ; k ++ ){

    for( j = k+1 ;j < count-1 ; j ++ ){

        if( array [ k ] > array [ j ] ){
       temp = array [ j ];
          array [ k ] = array [ j ];

          array [ j ] = Temp;

        }

    }

}    

  

二、选择排序

依次在序列中找最小的然后交换

[0]3          [1] 2        [2] 1       [3] 4         [4]5         [5]6

[2] 3          [1] 2        [0] 1       [3] 4         [4]5         [5]6

假设有一个count(表示几位数)数的排序

int  i , j , k , min , temp ,count ;

int array[];

for(k = 0 ;k < count -1){

    min = k;

    for (i=k+1 ; i < count ; i ++ ){

        if(array [ min ] > array [ i ] )

        min = i ;

    }     //在函数中找最小值

    if ( min == k){

        temp = min ;

        min = k;

        K = temp ;

    }

}

  

学如逆水行舟,不进则退。 博客园技术交流群 群 号:1073255314 (本群没人,刚刚建立 -_-!!! )
原文地址:https://www.cnblogs.com/Mj-NaijAm/p/13600999.html