排序算法
排序算法:
非递归的简单选择排序算法
我对于简单选择排序算法的理解是:选择初始元素作为初始的比较值,然后选取后面的元素与第一个元素比较,如果大小不同则可以进行交换操作,当比较完最后一个元素时,第一个元素一定是最小的元素,其后选取第二个元素进行与第一步相同的比较与操作,最后就可以得到排好的顺序啦!
//将一个数组作为参数传进简单选择排序算法中
void simpleSelect(int[] arr) {
//进行循环遍历并选取初始元素作为基准
for (int i = 0; i < arr.length - 1; i++) {
//进行第二层的循环遍历并比较其中的元素与选择的元素的大小
for (int k = i + 1; k < arr.length; k++) {
//如果第K个元素比第i个元素小,则交换元素的值,即将小的放在前面
if (arr[k] < arr[i]) {
int temp = arr[k];
arr[k] = arr[i];
arr[i] = temp;
}
}
}
}
递归的简单选择排序算法
这里使用递归的思想进行简单选择排序。
//传进来一个数组和梦开始的地方
void SelectSort(int[] arr,int i) {
//设置两个循环控制变量
int j,k;
if(i==arr.length-1) return;//递归出口
else {
k=i;
for(j=i+1;j<arr.length;j++) {
if(arr[j]<arr[k])
//角标的变换
k=j;
}
//当k不等于i的时候代表了k的值变了,进行数组元素的交换
if(k!=i) {
int temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
SelectSort(arr,i+1);
}
}