选择排序算法

选择排序是通过选择和交换来实现排序。
流程如下:
(1):首先在原始数组中选择一个最小的数据让其与第一个位置的数据交换。
(2):接着从(n-1)个数据中选择次小的数据将其和第二个位置的数据交换位置
(3):然后一直如此下去即可
下面举个例子:
初始数据:118 101 105 127 112
一次排序:101 118 105 127 112
二次排序:101 105 118 127 112
三次排序:101 105 112 127 118
四次排序:101 105 112 118 127
下面是具体的代码:
c语言:

#include<stdio.h> 
#include<stdlib.h>
#include<time.h>
#define SIZE 10 
void SelectionSort(int *a,int len)//选择排序算法
{
int i,j,k,h;
int temp; 
for(i=0;i<len-1;i++) 
{
k=i;
for(j=i+1;j<len;j++) 
{
if(a[j]<a[k])
k=j;
}//这个for循环作用就是找出最小的数据的位置
if(k!=i)//如果这个位置不是i执行以下操作交换俩个数据的位置即可
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
printf("第%d步排序结果巧:",i);
for(h=0;h<len;h++)
{
printf("%d ",a[h]); 
}
printf("\n");
}
}
void main()//主函数
{
int i;
int shuzu[SIZE];
srand(time(NULL));
for(i=0;i<SIZE;i++)
{
shuzu[i]=rand()/1000+100;
}
printf("排序前:\n"); 
for(i=0;i<SIZE;i++)
{
printf("%d ",shuzu[i]);
}
printf("\n");
SelectionSort(shuzu,SIZE);
printf("排序后:\n"); 
for(i=0;i<SIZE;i++)
{
printf("%d ",shuzu[i]);
}
printf("\n");
}

java:

//选择排序
public class selectSort {
    public static  void change(int arr[],int i,int j){
           int temp=arr[j];
            arr[j]=arr[i];
            arr[i]=temp;
    }
    public static void  sort(int arr[]){
        int N= arr.length;
        int temp;
        for(int i=0;i<N;i++){
            int min=i;
            for(int j=i+1;j<N;j++){
                if(arr[j]<arr[min])
                    change(arr,i,j);
            }
            System.out.println(arr[min]);
        }
    }
    public static void main(String[] args) {
        int arr[]={5,3,2,1,4,1};
        sort(arr);
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值