zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Oracle登录报错-ORA-00119
    Oracle11g配置监听
    Python Turtle模块的简单应用
    Turtle模块基本方法和使用(画布)
    python+selenium自动化禅道登录测试
    Xlrd模块读取Excel文件数据
    Selenium原理
    Axure中的登陆界面和动画轮播
    SQL Server创建用户并分配权限
    EF实体框架创建方法
  • 原文地址:https://www.cnblogs.com/zjhangia/p/10231103.html
Copyright © 2011-2022 走看看