将所有零移到数组的前面或后面,而不使用数据结构或临时数组。
apex:page doctype="html-5.0" sidebar="false" showHeader="false">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
<div ng-app = "app" ng-controller="myCtrl">
<p>Please upload you file:</p>
<p><input type="file" ng-model="allText"/></p>
<button ng-click="readCSV()">Upload</button>
<button ng-click="extractfile()">test</button>
</div>
<div ng-repeat="f in constr">
{{constr}}
</div>
<script>
var app = angular.module('app',[]);
.controller('myCtrl', myCtrl);
function myCtrl($scope) {
$scope.$log = $log;
$scope.readCSV = function($scope) {
var allTextLines = $scope.allText.split(/\r\n|\n/);
for ( var i = 0; i < allTextLines.length; i++)
{
var tarr = [];
tarr.push(allTextLines[i]);
}
};
$scope.extractfile = function(tarr) {
var constr[];
var deployobj ={
"Componenttype": Componenttype,
"ComponentApiname":ComponentApiname,
};
deployobj.push(tarr);
for (var j=0;j<$scope.deployobj.length;j++)
{
var str1 = "<members>";
var str2 = "</members>";
if ($scope.deployobj[j].Componenttype=== customobject)
{
var result = str1 +" "+$scope.deployobj[j].Componenttype+" "+str3;
$scope.constr.push(result);
}
}
};
}
</script>
</apex:page>
答案 0 :(得分:2)
您只需要:
维护数组中第一个非零项目的索引,
您当前正在扫描的项目的索引。
两个索引都从零开始。
如果您当前正在扫描的项目不为零,则递增 扫描指数。
如果您当前正在扫描的项目为零,请将其与 第一个非零索引处的项目,并递增两个索引。
重复直到扫描索引到达数组末尾。
答案 1 :(得分:1)
简单,强力的方式就像反向插入排序:你迭代你的数组,如果你发现
a[i] = 0, and a[i-i] != 0 then you swap a[i] and a[i-1]
你继续迭代,直到你可以“走”整个数组而不再进行交换。
答案 2 :(得分:0)
这是一个使用java的Arrays.sort方法的解决方案:
$url_="";
$filename="File.csv";
file_put_contents('/home/file/path' . $filename, file_get_contents($url));
答案 3 :(得分:0)
如果您的数组中没有负数,则可以对其进行排序。您可以使用ArrayList以非常简单的方式完成此操作。
ArrayList<Integer> integers = new ArrayList<>();
integers.add(5);
integers.add(2);
integers.add(0);
integers.add(44);
integers.add(0);
integers.add(1);
integers.add(555);
integers.forEach(System.out::println);
integers.sort(Integer::compareTo);
System.out.println("Sorted!");
integers.forEach(System.out::println);
输出
5
2
0
44
0
1
555
Sorted!
0
0
1
2
5
44
555
但是如果你有负数,你需要编写自己的比较器,如下所示:
integers.sort((o1, o2) -> o1 == 0 ? -1 : 0);
如果o1(两个数字中的一个)为零,则将其设为较小,以使其获得较低的索引。
注意:如果您不想使用ArrayList,可以使用Arrays.sort(array, comparator);