注册 登录
  • 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!

冒泡排序、选择排序和计数排序用C语言实现

OC/C/C++ 开心洋葱 2300次浏览 已收录 0个评论 手机上查看

//

// main.c

// test1

//

// Created by yt on 2017/.

// Copyright (c) 2017 yt. All rights reserved.

//

#include

#include

#include

clock_t start, finish;

double duration;

int * selection_sort(int *arr,int len){

int i,j,min,temp,count=0;

for (i=0;i1;i++){

min = i;

for(j=i+1;j

if(arr[min]>arr[j]){

min = j;

}

count++;

}

if(min!=i){

temp = arr[min];

arr[min] = arr[i];

arr[i] = temp;

}

}

printf(“count is %d\n”,count);

return arr;

}

int * bubble_sort(int *arr ,int len){

int i,j,temp,count=0;

for(i=0;i1;i++){

for(j=0;j1-i;j++){

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

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

count++;

}

}

printf(“count is %d\n”,count);

return arr;

}

void count_sort(int *arr, int *sorted_arr, int n)

{

int *count_arr = (int *)malloc(sizeof(int) * 100);

int i;

//初始化计数数组

for(i = 0; i<100; i++)

count_arr[i] = 0;

//统计i的次数

for(i = 0;i

count_arr[arr[i]]++;

//对所有的计数累加

for(i = 1; i<100; i++)

count_arr[i] += count_arr[i-1];

//逆向遍历源数组(保证稳定性),根据计数数组中对应的值填充到先的数组中

for(i = n; i>0; i–)

{

sorted_arr[count_arr[arr[i-1]]-1] = arr[i-1];

count_arr[arr[i-1]]–;

}

free(count_arr);

}

void printarr(int arr[],int len){

for(int i=0;i

printf(“%d,”,arr[i]);

}

}

int main(int argc, const char * argv[]) {

int arr[5],*sort_arr,count_sort_array[5];

arr[0]=3;arr[1]=9;arr[2]=0;arr[3]=20;arr[4]=6;

printf(“hello\n”);

printarr(arr,5);

printf(“\n\n”);

printf( “Time to do sort is “ );

start = clock();

count_sort(arr,count_sort_array,5);

finish = clock();

duration = (double)(finishstart) / CLOCKS_PER_SEC;

printf( “%f seconds\n”, duration );

printarr(count_sort_array,5);

return 0;

}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明冒泡排序、选择排序和计数排序用C语言实现
喜欢 (0)
[开心洋葱]
分享 (0)
关于作者:
开心洋葱,开心洋葱头,水墨

您必须 登录 才能发表评论!

……
加载中……