选择排序

来源:互联网 发布:能力天空源码下载 编辑:程序博客网 时间:2024/05/18 00:18

C语言

/* 版本一 */#include<stdio.h>#include<stdlib.h>void swap(int*a,int*b){    int temp;    temp=*a;    *a=*b;    *b=temp;}void select_sort(int A[],int n){    register int i,j,min,m;    for(i=0;i<n-1;i++)    {        min=i;//查找最小值        for(j=i+1;j<n;j++)        {            if(A[min]>A[j])            {                min=j;            }        }        if(min!=i)        {            swap(&A[min],&A[i]);            printf("第%d趟排序结果为:\n",i+1);            for(m=0;m<n;m++)            {                if(m>0)                {                    printf("");                }                printf("%d",A[m]);            }            printf("\n");        }    }}int main(void){    int n;    while(scanf("%d",&n)!=EOF)    /* VS2013等版本中需使用scanf_s(),VC6.0中使用scanf() */    {        int i;        int*A=(int*)malloc(sizeof(int)*n);        for(i=0;i<n;i++)        {            scanf("%d",&A[i]);        }        select_sort(A,n);        printf("最终排序结果为:\n");        for(i=0;i<n;i++)        {            if(i>0){                printf("");            }            printf("%d",A[i]);        }        printf("\n");    }    return 0;}/* 版本二 */#include <stdio.h>#include <math.h>#define MAX_SIZE 101#define SWAP(x, y, t)  ((t) = (x), (x) = (y), (y) = (t))void sort(int[], int);      /* selection sort */void main(void){    int i, n;    int list[MAX_SIZE];    printf("Enter the number of numbers to generate: ");    scanf_s("%d", &n);    if (n < 1 || n > MAX_SIZE){        fprintf(stderr, "Improper value of n\n");        exit(1);    }    for (i = 0; i < n; i++){    /* randomly generate numbers */        list[i] = rand() * 1000;        printf("%d ", list[i]);    }    sort(list, n);    printf("\n Sorted array:\n");    for (i = 0; i < n; i++)    /* print out sorted numbers */        printf("%d ", list[i]);    printf("\n");}void sort(int list[], int n){    int i, j, min, temp;    for (i = 0; i < n - 1; i++){        min = i;        for (j = i + 1; j < n; j++)        if (list[j] < list[min])            min = j;        SWAP(list[i], list[min], temp);    }}

c++

#include<iostream>#include<time.h>#include<iomanip>using namespace std;const int N=10;int main(){    int a[N],i,j,temp,b;    srand(time(NULL));    for(i=0;i<N;i++)        a[i]=rand()%100;    for(i=0;i<N;i++)        cout<<setw(3)<<a[i];    cout<<endl;    for(i=0;i<N-1;i++)    {        temp=i;        for(j=i+1;j<N;j++)        {            if(a[temp]>a[j])                temp=j;        }        if(i!=temp)        {            b=a[temp];            a[temp]=a[i];            a[i]=b;}    }    for(i=0;i<N;i++)        cout<<setw(3)<<a[i];    cout<<endl;}

JAVA

public static void selectSort(int[]a){    int minIndex=0;    int temp=0;    if((a==null)||(a.length==0))        return;    for(int i=0;i<a.length-1;i++)    {        minIndex=i;//无序区的最小数据数组下标        for(intj=i+1;j<a.length;j++)        {            //在无序区中找到最小数据并保存其数组下标            if(a[j]<a[minIndex])            {                minIndex=j;            }        }        if(minIndex!=i)        {            //如果不是无序区的最小值位置不是默认的第一个数据,则交换之。            temp=a[i];            a[i]=a[minIndex];            a[minIndex]=temp;        }    }}
0 0
原创粉丝点击