• c array sort


      1 //
      2 // Created by jia on 19/12/18.
      3 //
      4 #include "../header.h"
      5 //information
      6 void print_label(char* string){
      7     printf("%s
    ", string);
      8 }
      9 //oupt array
     10 void arr_output(int n, int arr[]){
     11     for(int i = 0; i < n; i ++){
     12         printf("arr[%d] = %4d	", i, arr[i]);
     13     }
     14 
     15     printf("
    
    ");
     16 }
     17 //swap two datas to make sure the first is smaller than the second
     18 void data_swap(int* a, int* b){
     19     if(*a > *b){
     20         int temp = *a;
     21         *a = *b;
     22         *b = temp;
     23     }
     24 }
     25 
     26 //improved bubble sort
     27 void improvedbubblesort(int n, int arr[]) {
     28     bool sorted = true;
     29     for (int i = 0; i < n; i++)
     30         for (int j = 0; j < n - i - 1; j++) {
     31             data_swap(&arr[j], &arr[j + 1]);
     32             sorted = false;
     33         }
     34     if (sorted) {
     35         return;
     36     }
     37     arr_output(n, arr);
     38 }
     39 //bubble sort
     40 void bubblesort(int n, int arr[]){
     41     for(int i = 0; i < n; i ++)
     42         for(int j = 0; j < n - i - 1; j ++){
     43             data_swap(&arr[j], &arr[j + 1]);
     44         }
     45     arr_output(n, arr);
     46 }
     47 //other sort
     48 void othersort(int n, int arr[]){
     49     for(int i = 0; i < n; i ++)
     50         for(int j = i; j < n; j ++){
     51             data_swap(&arr[i], &arr[j]);
     52         }
     53     arr_output(n, arr);
     54 }
     55 
     56 //insertion sort
     57 void insertionsort(int n, int arr[]){
     58     for(int i = 0; i < n; i ++){
     59         int temp = arr[i];
     60         bool hasmoved = false;
     61         bool notplaced = true;
     62         for(int j = i - 1; j >= 0; j --){
     63             if(arr[j] > temp){
     64                 //shift numvers till you find it's right location
     65                 arr[j + 1] = arr[j];
     66                 hasmoved = true;
     67             }else{
     68                 arr[j+1] = temp;
     69                 notplaced = false;
     70                 break;
     71             }
     72         }
     73         if(hasmoved && notplaced){
     74             arr[0] = temp;
     75         }
     76     }
     77     arr_output(n, ARR);
     78 }
     79 
     80 void selectionsort(int n, int arr[]){
     81     for(int j = n -1; j < n; j --){
     82         int pos = 0;
     83         for(int i = 1; i <= j; i ++){
     84             if(arr[i] > arr[pos]){
     85                 pos = i;
     86             }
     87             data_swap(&arr[pos], &arr[j]);
     88         }
     89     }
     90     arr_output(n, ARR);
     91 }
     92 void mergesort(int n, int arr[]){
     93 
     94 }
     95 
     96 //void (*cmc_result)(int n, int arr[]) function pointer to point the function
     97 void getsort(int t, void (*cmc_result)(int n, int arr[])){
     98     switch(t){
     99         case 0:{
    100             print_label("bubble sort:");
    101             //bubblesort(N, ARR);
    102             cmc_result(N, ARR);
    103         } break;
    104         case 1:{
    105             print_label("other sort:");
    106             othersort(N, ARR);
    107             //cmc_result(N, ARR);
    108 
    109             //cmc_result = othersort;
    110         } break;
    111         case 2:{
    112             print_label("improved sort:");
    113             cmc_result(N, ARR);
    114         } break;
    115         case 3:{
    116             print_label("insertion sort:");
    117             cmc_result(N, ARR);
    118             //cmc_result = othersort;
    119         } break;
    120         case 4:{
    121             print_label("selection sort:");
    122             cmc_result(N, ARR);
    123         } break;
    124     }
    125 }
  • 相关阅读:
    Windows下配置nginx+php(wnmp)
    nginx缓存优先级(缓存问题者必看)
    OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能
    M3U8文件简介
    拼车旅游网站 导航
    将jsp页面内容保存到excel(转)
    queryRuner如何获得bean对象,当这个bean对象中包含其他对象的时候
    js的trim方法(转)
    二进制运算误差问题
    myeclipes如何调试web项目
  • 原文地址:https://www.cnblogs.com/zjhangia/p/10231103.html
Copyright © 2020-2023  润新知