数据结构算法之排序系列Java、C源码实现(3)--直接选择排序

来源:互联网 发布:godaddy购买域名教程 编辑:程序博客网 时间:2024/06/06 03:49

直接选择排序

   首先在所有记录中选出码最小的记录,把它与第1个记录交换,然后在其余的记录内选出排序码最小的记录,与第2个记录交换…依次类推,直到所有记录排好序。直接选择排序的平均时间复杂度O(n2)

java代码:

public class Straight_Select {public static void main(String[] args) {int array[] = {2,9,4,5,1,8};showArray(array);System.out.println("\n排序后");Straight_Select(array);showArray(array);}private static void Straight_Select(int[] a) {int i,j,k,temp;int n = a.length;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(a[j]<a[k])k = j;}if(k!=i){temp = a[i];a[i]=a[k];a[k]=temp;}}}private static void showArray(int[] a){for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}}}


C代码:

//直接选择排序 

#include<stdio.h> void showArray(int a[],int len){for(int i=0;i<len;i++){printf("%d  ",a[i]);}}void Straight_Select(int a[],int n){int i,j,k,temp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(a[j]<a[k])k = j;}if(k!=i){temp = a[i];a[i]=a[k];a[k]=temp;}}}int main(){int array[] = {2,9,4,5,1,8};int len = sizeof(array)/sizeof(int);showArray(array,len);printf("\n排序后\n");Straight_Select(array,len);showArray(array,len);return 0;}

直接选择排序最好和最坏时间复杂度都是O(n^2) ,是一种不稳定排序

1 0
原创粉丝点击