排序方法以及删除算法帮小弟注释一下把
package experiment;
public class DeleteArrayTest {
public static void sort(int[] arr){ //排序方法
for(int i = 0;i < arr.length;i++){
int k =i;
for(int j=k;j < arr.length;j++){
if(arr[j] < arr[k]){
k = j;
}
}
if(k != i){
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
public static int[] deleteMulti(int[] arr){//删除方法
int m = 0;
int n = 0;
while(m < arr.length){
arr[n] = arr[m];
while(arr[n] == arr[m]){
m++;
if(m == arr.length){
break;
}
}
n++;
}
int[] newNum = new int[n];
for(int i = 0;i < n; i++)
newNum[i] = arr[i];
return newNum;
}
public static void main(String[] args) {
int[] arr = {7,8,5,4,2,6,4,8,7,6,2,6,9};
sort(arr);
int[] newarr = deleteMulti(arr);//用一个数组存排序好的,算不算?
for(int i=0;i<newarr.length;i++){
int strr=newarr[i];
System.out.print(" " + strr);
} }
}
package experiment;
public class DeleteArrayTest {
public static void sort(int[] arr){ //排序方法
for(int i = 0;i < arr.length;i++){
int k =i;
for(int j=k;j < arr.length;j++){
if(arr[j] < arr[k]){
k = j;
}
}
if(k != i){
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
public static int[] deleteMulti(int[] arr){//删除方法
int m = 0;
int n = 0;
while(m < arr.length){
arr[n] = arr[m];
while(arr[n] == arr[m]){
m++;
if(m == arr.length){
break;
}
}
n++;
}
int[] newNum = new int[n];
for(int i = 0;i < n; i++)
newNum[i] = arr[i];
return newNum;
}
public static void main(String[] args) {
int[] arr = {7,8,5,4,2,6,4,8,7,6,2,6,9};
sort(arr);
int[] newarr = deleteMulti(arr);//用一个数组存排序好的,算不算?
for(int i=0;i<newarr.length;i++){
int strr=newarr[i];
System.out.print(" " + strr);
} }
}
for(int i = 0;i < arr.length;i++){ //循环arr.length次
int k =i; //当前循环次数付给局部变量k
for(int j=k;j < arr.length;j++){ //循环比较arr.length-k次
if(arr[j] < arr[k]){ // 比较如果选出最小的元素付给k值 一次循环得出最小数arr[k}
k = j;
}
}
if(k != i){ //比较是否这次循换最小的是不是第一个比较低元素
int temp = arr[i]; //这个if语句块删出也不妨碍结果 效率低些就是咯
arr[i] = arr[k];
arr[k] = temp;
}
}
}
for(int i = 0;i < arr.length;i++){ //循环arr.length次
int k =i; //当前循环次数付给局部变量k
for(int j=k;j < arr.length;j++){ //循环比较arr.length-k次
if(arr[j] < arr[k]){ // 比较如果选出最小的元素付给k值 一次循环得出最小数arr[k}
k = j;
}
}
if(k != i){ //比较是否这次循换最小的是不是第一个比较低元素
int temp = arr[i]; //比较出的最小值付给元素arr。length的比较数
arr[i] = arr[k];
arr[k] = temp;
}
}
}
大哥比方就是十个数 你第一次比较找出最小的给a【1】 然后再剩下的九个数中在找 出最小的给a【2】 就这样来十次
public static int[] deleteMulti(int[] arr){//删除方法
int m = 0;
int n = 0; //m和n均赋初值为0
while(m < arr.length){
arr[n] = arr[m]; //将连续相同的数字中的最后一个数arr[m]赋给连续相同的数字(如果有的话)的第一个元素,即arr[n]
while(arr[n] == arr[m]){ //只要相等,就m++直到不等,也就是说找到连续相同的数字中的最后一个数字,即arr[m]
m++;
if(m == arr.length){ //如果到达数组最后就退出
break;
}
}
n++;
}
int[] newNum = new int[n];
for(int i = 0;i < n; i++) //将删除过重复数字的数组重新赋值给另一个数组,个人觉得这步完全没必要,直接return arr;不行吗?
newNum[i] = arr[i];
return newNum;
}
public static int[] deleteMulti(int[] arr){//删除方法
int m = 0;
int n = 0; //定义两个元素
while(m < arr.length){
arr[n] = arr[m]; //设置m的最大范围,定义的条件是把m下标的元素赋值给n下标的元素
while(arr[n] == arr[m]){ //定义条件是两元素相等,并和n下标的元素比较,如果相同,m就依次增加。
m++;
if(m == arr.length){ //到了数组的长度,打断·~
break;
}
}
n++; //n代表的数字是arr[m]元素有不相等的情况下,递增
}
int[] newNum = new int[n]; //新建一数组和n的长度一样,并且赋值给newNum 数组
for(int i = 0;i < n; i++)
newNum[i] = arr[i];
return newNum; //返回数组
} 这个是删除方法是删除数组中多余的元素,设置一初始值arr[n],让m依次增长和n比较,如果相等的话,只取一个,并且赋值给arr[n],不相等,m依次增加,这样arr[n]是里面没有重复的元素,然后新建一数组并且把arr[n]赋值给这个新建数组·返回这个数组