c一维数组之排序

利用一维数组,2种冒泡排序

#include <stdio.h>
#include <stdlib.h>

int arr[]={2,6,9,3,1,4,8,0,-1,99,8,7};
int len=sizeof(arr)/sizeof(arr[0]);
//选择
static void select_sort(){
    int i,j,k,tmp;
    int time=0;
    for(i=0;i<len;i++){
        k=i;
        for(j=i+1;j<len;j++){
            if(arr[j]<arr[k]){
                k=j;
            }
        }
        if(k!=i){
            tmp=arr[i];
            arr[i]=arr[k];
            arr[k]=tmp;
            time++;
        }
    }
    printf("time=%d\n",time);
}

static void sort1(){
    int i,j,tmp;
    int time=0;
    for(i=0;i<len-1;i++){
        for(j=i+1;j<len;j++){
            if(arr[i]>=arr[j]){
                tmp=arr[j];
                arr[j]=arr[i];
                arr[i]=tmp;
                time++;
            }
        }
    }

    
    printf("time=%d\n",time );
    
}
static void sort2(){
    int i,j,tmp;
    int time=0;
    for(i=0;i<len-1;i++){
        for(j=0;j<len-1-i;j++){
            if(arr[j] >arr[j+1]){
                tmp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=tmp;
                time++;
            }
        }
    }
    printf("time=%d\n",time );
}


int main(){
    // sort1();  //time=31
    // sort2();  //time=30
    select_sort(); //time=9
}

 选择排序

#include <stdio.h>
#include <stdlib.h>

int arr[]={2,6,9,3,1,4,8,0,-1,99,8,7};
int len=sizeof(arr)/sizeof(arr[0]);

static void select_sort(){
    int i,j,k,tmp;
    for(i=0;i<len;i++){
        k=i;
        for(j=i+1;j<len;j++){
            if(arr[j]<arr[k]){
                k=j;
            }
        }
        if(k!=i){
            tmp=arr[i];
            arr[i]=arr[k];
            arr[k]=tmp;
        }
    }
    for(i=0;i<len;i++){
        printf("%d ",arr[i] );
    }
    printf("\n");
}

int main(){
    select_sort();
}

 

posted @ 2018-01-01 17:15  H&K  阅读(364)  评论(0)    收藏  举报