精华内容
下载资源
问答
  • c语言实现选择排序

    2015-05-22 16:06:34
    C语言实现选择排序

    选择排序的思想是将待排序的数组进行循环,从data[1]开始,分别用data[2]到data[n-1]进行比较,如果比data[1]小,则记录下data[j]在数组中的位置,将j复制到index中,在继续让data[2]到data[n-1]与data[index]进行比较,如果存在比data[index]小的那么继续将其复制到data[index]中,這样一遍循环下来便可找到data[1]到data[n-1]中最小的数字,接下来将data[1]最小的数data[index]进行交换,用data[0]做为哨兵,這样循环一遍便可以找到最小的元素,以此类推,循环n-1遍便可以完成整个排序过程。需要注意的是 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。


    #include<stdio.h>
    
    typedef struct{
    	int key;
    	char name[10];
    }Data;
    
    Data listOld[]={{0,"num0"},{49,"num1"},{37,"num2"},{56,"num3"},{67,"num4"},{43,"num5"},{97,"num6"},{23,"num7"},{49,"num8"}};
    
    void printfData(Data *pdata,int n);
    void selectSort(Data *pdata,int n);
    
    int main(int argc,char argv[]){
    	selectSort(listOld,9);
    	printfData(listOld,9);
    	return 0;
    }
    
    
    void printfData(Data *pdata,int n)
    {
        int i;
    	for(i=1;i<n;i++)
    	{
    			printf("%d,%s ",pdata[i].key,pdata[i].name);
    	}
    	printf("\n");
    
    }
    
    void selectSort(Data *pdata,int n){
    	int index,i,j;
    	for(i=1;i<n;i++){
    		index = i;
    		pdata[0] = pdata[i];
    		for(j=i+1;j<n;j++){
    			if(pdata[j].key<pdata[index].key)
    			{
    				index = j;
    			}
    		}
    		if(index!=i){
    					pdata[0]=pdata[i];
    					pdata[i]=pdata[index];
    					pdata[index]=pdata[0];
    
    		}
    	}
    }
    

    #include<stdio.h>
    
    typedef struct{
    	int key;
    	char name[10];
    }Data;
    
    Data listOld[]={{0,"num0"},{49,"num1"},{37,"num2"},{56,"num3"},{67,"num4"},{43,"num5"},{97,"num6"},{23,"num7"},{49,"num8"}};
    
    void printfData(Data *pdata,int n);
    void selectSort(Data *pdata,int n);
    
    int main(int argc,char argv[]){
    	selectSort(listOld,9);
    	printfData(listOld,9);
    	return 0;
    }
    
    
    void printfData(Data *pdata,int n)
    {
        int i;
    	for(i=1;i<n;i++)
    	{
    			printf("%d,%s ",pdata[i].key,pdata[i].name);
    	}
    	printf("\n");
    
    }
    
    void selectSort(Data *pdata,int n){
    	int index,i,j;
    	for(i=1;i<n;i++){
    		index = i;
    		pdata[0] = pdata[i];
    		for(j=i+1;j<n;j++){
    			if(pdata[j].key<pdata[index].key)
    			{
    				index = j;
    			}
    		}
    		if(index!=i){
    					pdata[0]=pdata[i];
    					pdata[i]=pdata[index];
    					pdata[index]=pdata[0];
    
    		}
    	}
    }
    

    展开全文
  • C语言实现选择排序

    2015-02-14 15:23:13
    C语言实现选择排序

    自己用C语言实现的选择排序:)

    # include <stdio.h>
    
    
    void selection_sort(int a[], int n) {
        int min, k;
        for (int i=0; i<n; i++){
            min = a[i];
            k = i;
            for (int j=i+1; j<n; j++) {
                if (a[j] < min) {
                    min = a[j];
                    k = j;
                }
            }
            int temp = a[k];
            a[k] = a[i];
            a[i] = temp;
        }
    }
    
    void main() {
        int a[5] = {20, 10, 40, 30, -50};
        selection_sort(a, 5);
        for (int i=0; i<5; i++) {
            printf("%d\t", a[i]);
        }
    }
    展开全文
  • 新人新气象,我又来了,C语言实现选择排序。很基础的东西,原理什么的就不扯了。 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <windows.h> 4 5 #define LENGTH 20 6...

    新人新气象,我又来了,C语言实现选择排序。很基础的东西,原理什么的就不扯了。

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <windows.h>
      4 
      5 #define LENGTH 20
      6 
      7 const WORD FORE_BLUE   = FOREGROUND_BLUE|FOREGROUND_INTENSITY;
      8 const WORD FORE_GREEN  = FOREGROUND_GREEN|FOREGROUND_INTENSITY;
      9 const WORD FORE_RED    = FOREGROUND_RED|FOREGROUND_INTENSITY;
     10 const WORD FORE_WHITE = FOREGROUND_RED | FOREGROUND_GREEN|FOREGROUND_BLUE;
     11 
     12 void sort_selection(int *a);
     13 void display(int *a);
     14 void details(int *a);
     15 void setcolor(HANDLE outhandle,int *a,int index,WORD rgb);
     16 
     17 void display(int *a)
     18 {
     19     int i;
     20     for (i=0;i<LENGTH;i++)
     21     {
     22         printf("%2d ",a[i]);
     23     }
     24     printf("\n");
     25 }
     26 
     27 void sort_selection(int *a)
     28 {
     29     int i,j,min,temp;
     30     for (i=0;i<LENGTH-1;i++)
     31     {
     32         min=i;
     33         for (j=i+1;j<=LENGTH-1;j++)
     34         {
     35             if (a[j]<a[min])
     36                min=j;
     37         }
     38         temp=a[i];
     39         a[i]=a[min];
     40         a[min]=temp;
     41     }
     42 }
     43 int main()
     44 {
     45     int array[LENGTH]={20,62,30,50,80,37,40,22,55,44,
     46                        77,85,18,44,90,73,26,10,46,64};
     47     int array2[LENGTH]={20,62,30,50,80,37,40,22,55,44,
     48                        77,85,18,44,90,73,26,10,46,64};
     49     printf("Before sort:\n");
     50     display(array);
     51     sort_selection(array);
     52     printf("Success sort:\n");
     53     display(array);
     54     printf("Press to display details:\n");
     55     getch();
     56     details(array2);
     57     getch();
     58     return 0;
     59 }
     60 void setcolor(HANDLE outhandle,int *a,int index,WORD rgb)
     61 {
     62     if (index<0||index>LENGTH-1)
     63     {
     64         return;
     65     }
     66     COORD xy={0,0};
     67     xy.Y=5;
     68     xy.X=index*3;
     69     SetConsoleTextAttribute(outhandle, rgb);
     70     SetConsoleCursorPosition(outhandle,xy);
     71     printf("  ");
     72     SetConsoleCursorPosition(outhandle,xy);
     73     printf("%2d",a[index]);
     74 }
     75 void details(int *a)
     76 {
     77     int i,j,min,temp;
     78     HANDLE outhandle=GetStdHandle(STD_OUTPUT_HANDLE);
     79     display(a);
     80     for (i=0;i<LENGTH-1;i++)
     81     {
     82         min=i;
     83         setcolor(outhandle,a,min,FORE_BLUE);
     84         Sleep(200);
     85         for (j=i+1;j<=LENGTH-1;j++)
     86         {
     87             setcolor(outhandle,a,j,FORE_RED);
     88             Sleep(100);
     89             if (a[j]<a[min])
     90             {
     91                setcolor(outhandle,a,min,FORE_WHITE);
     92                min=j;
     93                setcolor(outhandle,a,min,FORE_BLUE);
     94                Sleep(100);
     95             }
     96             else
     97             {
     98                 setcolor(outhandle,a,j,FORE_WHITE);
     99                 Sleep(100);
    100             }
    101         }
    102         temp=a[i];
    103         a[i]=a[min];
    104         a[min]=temp;
    105         setcolor(outhandle,a,min,FORE_WHITE);
    106         setcolor(outhandle,a,i,FORE_GREEN);
    107         Sleep(200);
    108     }
    109     setcolor(outhandle,a,LENGTH-1,FORE_GREEN);
    110     CloseHandle(outhandle);
    111 }
    点击显示伪代码

     

    转载于:https://www.cnblogs.com/lisg001/p/9086204.html

    展开全文
  • C语言实现简单选择排序 文章目录C语言实现简单选择排序简单选择排序算法1.交换操作2.简单选择排序算法实现项目完整代码运行效果图 简单选择排序算法 1.交换操作 //交换实现 void swap(int &a, int &b) { ...

    C语言实现简单选择排序

    简单选择排序算法

    1.交换操作

    //交换实现
    void swap(int &a, int &b) {
        int temp = a;
        a = b;
        b = temp;
    }
    

    2.简单选择排序算法实现

    //简单选择排序算法
    void SelectSort(int arr[], int len) {
        for (int i = 0; i < len - 1; ++i) {         //一共进行len-1趟
            int min = i;                            //记录最小的元素位置
            for (int j = i + 1; j < len; ++j) {     //在arr[i...len-1]中选择最小的
                if (arr[j] < arr[min])              //如果当前位置的值比已记录位置的值还小
                    min = j;                        //更新最小值的位置
            }
            if (min != i)                           //如果这个最小值不是本身
                swap(arr[i], arr[min]);       //交换当前位置与初始记录位置
        }
    }
    

    项目完整代码

    //选择排序————简单选择排序(不稳定,空间复杂度O(1),时间复杂度O(n^2))
    #include <stdio.h>
    
    //交换实现
    void swap(int &a, int &b) {
        int temp = a;
        a = b;
        b = temp;
    }
    
    //简单选择排序算法
    void SelectSort(int arr[], int len) {
        for (int i = 0; i < len - 1; ++i) {         //一共进行len-1趟
            int min = i;                            //记录最小的元素位置
            for (int j = i + 1; j < len; ++j) {     //在arr[i...len-1]中选择最小的
                if (arr[j] < arr[min])              //如果当前位置的值比已记录位置的值还小
                    min = j;                        //更新最小值的位置
            }
            if (min != i)                           //如果这个最小值不是本身
                swap(arr[i], arr[min]);       //交换当前位置与初始记录位置
        }
    }
    
    int main() {
        int arr[] = {49, 38, 65, 97, 76, 13, 27, 49};
        int len = sizeof(arr) / sizeof(int);
        //简单选择排序
        SelectSort(arr, len);
        //将已排序结果输出
        printf("简单选择排序结果为:");
        for (int i = 0; i < len; ++i) {
            printf("%d ", arr[i]);
        }
        return 0;
    }
    

    运行效果图

        int arr[] = {49, 38, 65, 97, 76, 13, 27, 49};
    

    在这里插入图片描述

    展开全文
  • 主要介绍了C++中实现选择排序、冒泡排序和快速排序的代码示例,例子带有执行时间统计还可以简单看一下效率对比,需要的朋友可以参考下
  • 数据结构之---C语言实现选择排序

    千次阅读 2015-09-06 22:42:00
    数据结构之---C语言实现选择排序
  • 主要介绍了C++实现选择排序、直接插入排序、冒泡排序的代码示例,相当简洁直观,也是算法和数据结构学习中的基础,需要的朋友可以参考下
  • 因为临近期末,就随手复习了一波。...选择排序 #include void print(int a[], int n) { for (int i = 0; i ; i++) printf("%d ", a[i]); putchar('\n'); } int main() { int i, a[10]; printf("请输入十个
  • 冒泡排序 “冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。 这里以从小到大排序为例进行讲解。 基本思想及举例说明冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素...
  • C语言实现排序 文章目录C语言实现排序大根堆排序算法1.交换操作2.对结点进行调整为大根堆3.建立大根堆4.大根堆排序算法实现小根堆排序算法1.交换操作2.对结点进行调整为小根堆3.建立小根堆4.大根堆排序算法实现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,500
精华内容 600
关键字:

c语言实现选择排序

c语言 订阅